From c42c0e1e4819da3ab5f87d89cb564e804aa2224c Mon Sep 17 00:00:00 2001
From: Oliver <oliver.henry.walters@gmail.com>
Date: Mon, 25 Jul 2022 14:27:14 +1000
Subject: [PATCH] New Crowdin updates (#3315)

* updated translation base

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations django.po from Crowdin

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
 InvenTree/locale/cs/LC_MESSAGES/django.po    | 2813 ++++++++--------
 InvenTree/locale/de/LC_MESSAGES/django.po    | 2805 ++++++++--------
 InvenTree/locale/el/LC_MESSAGES/django.po    | 2813 ++++++++--------
 InvenTree/locale/en/LC_MESSAGES/django.po    | 1363 ++++----
 InvenTree/locale/es/LC_MESSAGES/django.po    | 2811 ++++++++--------
 InvenTree/locale/es_MX/LC_MESSAGES/django.po | 1363 ++++----
 InvenTree/locale/fa/LC_MESSAGES/django.po    | 2813 ++++++++--------
 InvenTree/locale/fr/LC_MESSAGES/django.po    | 3029 ++++++++---------
 InvenTree/locale/he/LC_MESSAGES/django.po    | 2813 ++++++++--------
 InvenTree/locale/hu/LC_MESSAGES/django.po    | 2883 ++++++++--------
 InvenTree/locale/id/LC_MESSAGES/django.po    | 2813 ++++++++--------
 InvenTree/locale/it/LC_MESSAGES/django.po    | 2807 ++++++++--------
 InvenTree/locale/ja/LC_MESSAGES/django.po    | 2813 ++++++++--------
 InvenTree/locale/ko/LC_MESSAGES/django.po    | 2815 ++++++++--------
 InvenTree/locale/nl/LC_MESSAGES/django.po    | 2797 ++++++++--------
 InvenTree/locale/no/LC_MESSAGES/django.po    | 2829 ++++++++--------
 InvenTree/locale/pl/LC_MESSAGES/django.po    | 2823 ++++++++--------
 InvenTree/locale/pt/LC_MESSAGES/django.po    | 3161 +++++++++---------
 InvenTree/locale/pt_br/LC_MESSAGES/django.po | 1363 ++++----
 InvenTree/locale/ru/LC_MESSAGES/django.po    | 2821 ++++++++--------
 InvenTree/locale/sv/LC_MESSAGES/django.po    | 3095 ++++++++---------
 InvenTree/locale/th/LC_MESSAGES/django.po    | 2813 ++++++++--------
 InvenTree/locale/tr/LC_MESSAGES/django.po    | 2817 ++++++++--------
 InvenTree/locale/vi/LC_MESSAGES/django.po    | 2813 ++++++++--------
 InvenTree/locale/zh/LC_MESSAGES/django.po    | 2819 ++++++++--------
 25 files changed, 34017 insertions(+), 32888 deletions(-)

diff --git a/InvenTree/locale/cs/LC_MESSAGES/django.po b/InvenTree/locale/cs/LC_MESSAGES/django.po
index 7d9f659092..82730bf041 100644
--- a/InvenTree/locale/cs/LC_MESSAGES/django.po
+++ b/InvenTree/locale/cs/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:41\n"
 "Last-Translator: \n"
 "Language-Team: Czech\n"
 "Language: cs_CZ\n"
@@ -25,196 +25,253 @@ msgstr "API endpoint nebyl nalezen"
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "Zadejte datum"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr ""
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "Zadejte heslo"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "Zadejte nové heslo"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Potvrďte heslo"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Potvrďte nové heslo"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr ""
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "Email (znovu)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "Potvrzení emailové adresy"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "Pokaždé musíte zadat stejný email."
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr "Duplicitní výrobní číslo: {sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "Vyplněno neplatné množství"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "Nevyplněné výrobní číslo"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "Neplatná skupina: {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "Neplatná/nevyplněná skupina {group}"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "Nenalezena žádná výrobní čísla"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "Chybějící soubor"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "Chybějící externí odkaz"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "Příloha"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "Vyberte soubor k přiložení"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "Odkaz"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "Odkaz na externí URL"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "Komentář"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "Komentář k souboru"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "Uživatel"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "datum přidání"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "Název souboru nesmí být prázdný"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "Neplatný adresář přílohy"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "Název souboru obsahuje nepovolený znak '{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "Chybějící přípona souboru"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "Příloha s tímto názvem již existuje"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "Chyba při přejmenování souboru"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "Neplatný výběr"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr "Neplatný výběr"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "Název"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "Popis"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "Popis (volitelně)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "nadřazený"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr ""
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr ""
 
@@ -273,56 +330,69 @@ msgstr ""
 msgid "Must be a valid number"
 msgstr "Musí být platné číslo"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "Název souboru"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr "Neplatná hodnota"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr "Datový soubor"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr "Vyberte datový soubor k nahrání"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr "Nepodporovaný typ souboru"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "Soubor je příliš velký"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr "V souboru nebyly nalezeny žádné sloupce"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr "V souboru nebyly nalezeny žádné řádky s daty"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr "Nebyly zadány žádné řádky s daty"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr "Nebyly zadány žádné sloupce s daty"
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr "Chybí povinný sloupec: '{name}'"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "Duplicitní sloupec: '{col}'"
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr "Čeština"
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr "Kontroly zdraví systému InvenTree selhaly"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "Nevyřízeno"
 
@@ -461,8 +531,8 @@ msgstr "Ztraceno"
 msgid "Returned"
 msgstr "Vráceno"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "Odesláno"
 
@@ -546,7 +616,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr ""
 
@@ -554,7 +624,7 @@ msgstr ""
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr ""
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr ""
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr ""
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr ""
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr ""
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr ""
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
@@ -646,20 +710,20 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr ""
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr ""
 msgid "Build Orders"
 msgstr ""
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr ""
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr ""
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:240
+#: build/models.py:217
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr ""
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr ""
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr ""
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr ""
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr ""
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr ""
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr ""
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr ""
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr ""
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr ""
 
@@ -1360,8 +1424,8 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr ""
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr ""
 
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1438,7 +1502,7 @@ msgstr ""
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr ""
 
@@ -1581,985 +1645,997 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr ""
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr ""
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr ""
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr ""
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr ""
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr ""
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr ""
-
 #: company/models.py:98
 msgid "Company description"
 msgstr ""
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr ""
 
@@ -2707,9 +2774,9 @@ msgstr ""
 msgid "Does this company manufacture parts?"
 msgstr ""
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr ""
 
@@ -2717,9 +2784,9 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2745,11 +2812,11 @@ msgstr ""
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr ""
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr ""
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr ""
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr ""
 
@@ -2953,14 +3020,14 @@ msgstr ""
 msgid "Download image from URL"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -2977,6 +3044,11 @@ msgstr ""
 msgid "Upload Image"
 msgstr ""
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr ""
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr ""
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr ""
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr ""
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr ""
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr ""
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr ""
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr ""
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr ""
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr ""
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr ""
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr ""
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr ""
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "Potvrdit"
 
@@ -7542,7 +7603,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index 85f45fa960..685cbeecba 100644
--- a/InvenTree/locale/de/LC_MESSAGES/django.po
+++ b/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:41\n"
 "Last-Translator: \n"
 "Language-Team: German\n"
 "Language: de_DE\n"
@@ -25,196 +25,253 @@ msgstr "API-Endpunkt nicht gefunden"
 msgid "Error details can be found in the admin panel"
 msgstr "Fehlerdetails finden Sie im Admin-Panel"
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "Datum eingeben"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr "Notizen"
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "Passwort eingeben"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "Neues Passwort eingeben"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Passwort wiederholen"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Neues Passwort bestätigen"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr "Altes Passwort"
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "E-Mail (nochmal)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "Bestätigung der E-Mail Adresse"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "E-Mail Adressen müssen übereinstimmen."
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
-msgstr "Token"
-
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
+msgstr ""
+
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr "Angegebene URL ist kein gültiges Bild"
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr "Doppelte Seriennummer: {sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "Keine gültige Menge"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "Keine Seriennummer angegeben"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr "Ungültiger Gruppenbereich: {g}"
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "Ungültige Gruppe: {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr "Ungültige Gruppensequenz: {g}"
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "Ungültige/Keine Gruppe {group}"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "Keine Seriennummern gefunden"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr "Anzahl der eindeutigen Seriennummern ({s}) muss mit der Anzahl ({q}) übereinstimmen"
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "Fehlende Datei"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "Fehlender externer Link"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "Anhang"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "Datei zum Anhängen auswählen"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "Link"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "Link zu einer externen URL"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "Kommentar"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "Datei-Kommentar"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "Benutzer"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "Hochladedatum"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "Dateiname darf nicht leer sein"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "Ungültiges Verzeichnis für Anhang"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "Dateiname enthält ungültiges Zeichen '{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "Dateiendung fehlt"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "Anhang mit diesem Dateinamen bereits vorhanden"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "Fehler beim Umbenennen"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "Ungültige Auswahl"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr "Ungültige Auswahl"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "Name"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "Beschreibung"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "Beschreibung (optional)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "Eltern"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr "Serverfehler"
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr "Ein Fehler wurde vom Server protokolliert."
 
@@ -273,56 +330,69 @@ msgstr "Ein Fehler wurde vom Server protokolliert."
 msgid "Must be a valid number"
 msgstr "Muss eine gültige Nummer sein"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "Dateiname"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr "Ungültiger Wert"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr "Datendatei"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr "Neue Datei zum Hochladen auswählen"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr "Nicht unterstütztes Dateiformat"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "Datei ist zu groß"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr "Keine Spalten in der Datei gefunden"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr "Keine Datensätze in der Datei gefunden"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr "Keine Zeilen ausgewählt"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr "Keine Spalten angegeben"
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr "Erforderliche Spalte '{name}' fehlt"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "Doppelte Spalte: '{col}'"
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr "URL"
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr "Tschechisch"
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr "InvenTree Status-Überprüfung fehlgeschlagen"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "Ausstehend"
 
@@ -461,8 +531,8 @@ msgstr "Verloren"
 msgid "Returned"
 msgstr "Zurückgegeben"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "Versendet"
 
@@ -546,7 +616,7 @@ msgstr "Vom übergeordneten Element geteilt"
 msgid "Split child item"
 msgstr "Unterobjekt geteilt"
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr "Lagerartikel zusammengeführt"
 
@@ -554,7 +624,7 @@ msgstr "Lagerartikel zusammengeführt"
 msgid "Converted to variant"
 msgstr "In Variante umgewandelt"
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr "Zum Kunden geschickt"
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr "IPN muss zu Regex-Muster  {pat} passen"
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr "Referenz muss zu Regex-Muster {pattern} passen"
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr "Ungültiges Zeichen im Namen ({x})"
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr "Überschuss-Wert darf nicht negativ sein"
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr "Überschuss darf 100% nicht überschreiten"
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr "Ungültiger Wert für Ausschuss"
 
@@ -646,20 +710,20 @@ msgstr "Über InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr "Ungültige Wahl für übergeordneten Bauauftrag"
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr "Bauauftrag"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr "Bauauftrag"
 msgid "Build Orders"
 msgstr "Bauaufträge"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr "Bauauftragsreferenz"
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr "Referenz"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr "Kurze Beschreibung des Baus"
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Eltern-Bauauftrag"
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "Teil"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr "Teil für den Bauauftrag wählen"
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr "Auftrag Referenz"
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr "Bestellung, die diesem Bauauftrag zugewiesen ist"
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr "Quell-Lagerort"
 
-#: build/models.py:240
+#: build/models.py:217
 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:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr "Ziel-Lagerort"
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr "Lagerort an dem fertige Objekte gelagert werden auswählen"
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr "Bau-Anzahl"
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr "Anzahl der zu bauenden Lagerartikel"
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr "Fertiggestellte Teile"
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr "Anzahl der fertigen Lagerartikel"
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr "Bauauftrags-Status"
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr "Bau-Statuscode"
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr "Losnummer"
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr "Losnummer für dieses Endprodukt"
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr "Erstelldatum"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr "geplantes Fertigstellungsdatum"
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Zieldatum für Bauauftrag-Fertigstellung."
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr "Fertigstellungsdatum"
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr "Fertiggestellt von"
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr "Aufgegeben von"
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr "Nutzer der diesen Bauauftrag erstellt hat"
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr "Verantwortlicher Benutzer"
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr "Nutzer der für diesen Bauauftrag zuständig ist"
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr "Nutzer der für diesen Bauauftrag zuständig ist"
 msgid "External Link"
 msgstr "Externer Link"
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr "Extranotizen für den Bauauftrag"
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr "kein Endprodukt angegeben"
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr "Endprodukt bereits hergstellt"
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein"
 
-#: build/models.py:1162
+#: build/models.py:1143
 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:1171
+#: build/models.py:1152
 #, 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:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr "BestandObjekt ist zu oft zugewiesen"
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr "Reserviermenge muss größer null sein"
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein"
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr "Ausgewähltes Bestands-Objekt nicht in Stückliste für Teil '{p}' gefunden"
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr "Bauauftrag"
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr "Bauauftrag starten um Teile zuzuweisen"
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr "Lagerartikel"
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr "Quell-Lagerartikel"
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "Anzahl"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen"
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr "Installiere in"
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr "Ziel-Lagerartikel"
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr "Endprodukt"
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr "Endprodukt stimmt nicht mit übergeordnetem Bauauftrag überein"
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr "Endprodukt entspricht nicht dem Teil des Bauauftrags"
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr "Dieses Endprodukt wurde bereits fertiggestellt"
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr "Dieses Endprodukt ist nicht vollständig zugewiesen"
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr "Menge der Endprodukte angeben"
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr "Anzahl muss größer Null sein"
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr "Ganzzahl für verfolgbare Teile erforderlich"
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 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:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr "Seriennummer"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr "Seriennummer für dieses Endprodukt eingeben"
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr "Seriennummern automatisch zuweisen"
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Benötigte Lagerartikel automatisch mit passenden Seriennummern zuweisen"
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr "Folgende Seriennummern existieren bereits"
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr "Eine Liste von Endprodukten muss angegeben werden"
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr "Lagerort"
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr "Lagerort für fertige Endprodukte"
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr "Status"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr "Unvollständige Zuweisung akzeptieren"
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr "Endprodukte fertigstellen, auch wenn Bestand nicht fertig zugewiesen wurde"
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr "Zugewiesenen Bestand entfernen"
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr "Abzug aller Lagerbestände, die diesem Build bereits zugewiesen wurden"
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr "Unfertige Endprodukte entfernen"
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr "Lösche alle noch nicht abgeschlossenen Endprodukte"
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr "Nicht zugewiesene akzeptieren"
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr "Akzeptieren, dass Lagerartikel diesem Bauauftrag nicht vollständig zugewiesen wurden"
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr "Benötigter Bestand wurde nicht vollständig zugewiesen"
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr "Unvollständig Zuweisung akzeptieren"
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr "Akzeptieren, dass die erforderliche Anzahl der Bauaufträge nicht abgeschlossen ist"
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt"
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr "Bauauftrag hat unvollständige Aufbauten"
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr "Es wurden keine Endprodukte für diesen Bauauftrag erstellt"
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr "Stücklisten-Position"
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr "Endprodukt"
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen"
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr "bom_item.part muss auf dasselbe Teil verweisen wie der Bauauftrag"
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr "Teil muss auf Lager sein"
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Verfügbare Menge ({q}) überschritten"
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr "Für Zuweisung von verfolgten Teilen muss ein Endprodukt angegeben sein"
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 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:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr "Dieser Lagerbestand wurde bereits diesem Endprodukt zugewiesen"
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr "Zuweisungen müssen angegeben werden"
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr "Lagerort, von dem Teile bezogen werden sollen (leer lassen, um sie von jedem Lagerort zu nehmen)"
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr "Lagerort ausschließen"
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr "Lagerartikel vom ausgewählten Ort ausschließen"
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr "Wechselbares Lagerbestand"
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr "Lagerartikel an mehreren Standorten können austauschbar verwendet werden"
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr "Ersatzbestand"
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr "Zuordnung von Ersatzteilen erlauben"
 
@@ -1284,13 +1348,13 @@ 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:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr "Zieldatum"
 
@@ -1303,35 +1367,35 @@ msgstr "Bauauftrag war fällig am %(target)s"
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr "Überfällig"
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr "Fertig"
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr "Auftrag"
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr "Aufgegeben von"
 
@@ -1360,8 +1424,8 @@ 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:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr "Ziel-Lager"
 
@@ -1375,19 +1439,19 @@ msgstr "Zugewiesene Teile"
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr "Losnummer"
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr "Erstellt"
 
@@ -1407,7 +1471,7 @@ msgstr "Unter-Bauaufträge"
 msgid "Allocate Stock to Build"
 msgstr "Bestand Bauauftrag zuweisen"
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr "Bestandszuordnung aufheben"
 
@@ -1438,7 +1502,7 @@ msgstr "Benötigte Teile bestellen"
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr "Teile bestellen"
 
@@ -1581,985 +1645,997 @@ msgstr "{name.title()} Datei"
 msgid "Select {name} file to upload"
 msgstr "{name} Datei zum Hochladen auswählen"
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)"
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr "Einstellungs-Wert"
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr "Wert ist keine gültige Option"
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr "Wahrheitswert erforderlich"
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr "Nur Ganzzahl eingeben"
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr "Schlüsseltext muss eindeutig sein"
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr "Keine Gruppe"
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr "Neustart erforderlich"
 
-#: common/models.py:798
+#: common/models.py:805
 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:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr "Name der Serverinstanz"
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr "Kurze Beschreibung der Instanz"
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr "Name der Instanz verwenden"
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr "Den Namen der Instanz in der Titelleiste verwenden"
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr "Anzeige von `Über` einschränken"
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr "Zeige das `Über` Fenster nur Administratoren"
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr "Firmenname"
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr "interner Firmenname"
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr "Basis-URL"
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr "Basis-URL für dieses Instanz"
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr "Standardwährung"
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr "Standardwährung"
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr "Von URL herunterladen"
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt"
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
+#: common/models.py:861
+msgid "Download Size Limit"
+msgstr ""
+
+#: common/models.py:862
+msgid "Maximum allowable download size for remote image"
+msgstr ""
+
+#: common/models.py:873
+msgid "Require confirm"
+msgstr ""
+
+#: common/models.py:874
+msgid "Require explicit user confirmation for certain action."
+msgstr ""
+
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
 msgid "Barcode Support"
 msgstr "Bacode-Feature verwenden"
 
-#: common/models.py:855
+#: common/models.py:881
 msgid "Enable barcode scanner support"
 msgstr "Barcode-Scanner Unterstützung"
 
-#: common/models.py:861
+#: common/models.py:887
 msgid "Barcode Webcam Support"
 msgstr "Barcode Webcam-Unterstützung"
 
-#: common/models.py:862
+#: common/models.py:888
 msgid "Allow barcode scanning via webcam in browser"
 msgstr "Barcode-Scannen über Webcam im Browser erlauben"
 
-#: common/models.py:868
+#: common/models.py:894
 msgid "IPN Regex"
 msgstr "IPN Regex"
 
-#: common/models.py:869
+#: common/models.py:895
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "RegEx Muster für die Zuordnung von Teil-IPN"
 
-#: common/models.py:873
+#: common/models.py:899
 msgid "Allow Duplicate IPN"
 msgstr "Mehrere Artikel mit gleicher IPN erlaubt"
 
-#: common/models.py:874
+#: common/models.py:900
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Mehrere Artikel mit gleicher IPN erlaubt"
 
-#: common/models.py:880
+#: common/models.py:906
 msgid "Allow Editing IPN"
 msgstr "Ändern von IPN erlaubt"
 
-#: common/models.py:881
+#: common/models.py:907
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt"
 
-#: common/models.py:887
+#: common/models.py:913
 msgid "Copy Part BOM Data"
 msgstr "Teil-Stückliste kopieren"
 
-#: common/models.py:888
+#: common/models.py:914
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird "
 
-#: common/models.py:894
+#: common/models.py:920
 msgid "Copy Part Parameter Data"
 msgstr "Teil-Parameter kopieren"
 
-#: common/models.py:895
+#: common/models.py:921
 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:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr "Teil-Testdaten kopieren"
 
-#: common/models.py:902
+#: common/models.py:928
 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:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr "Kategorie-Parametervorlage kopieren"
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird"
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr "Vorlage"
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr "Teile sind standardmäßig Vorlagen"
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr "Baugruppe"
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden"
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr "Komponente"
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr "Teile können standardmäßig in Baugruppen benutzt werden"
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr "Kaufbar"
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr "Artikel sind grundsätzlich kaufbar"
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr "Verkäuflich"
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr "Artikel sind grundsätzlich verkaufbar"
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr "Nachverfolgbar"
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr "Artikel sind grundsätzlich verfolgbar"
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr "Virtuell"
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr "Teile sind grundsätzlich virtuell"
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr "Import in Ansichten anzeigen"
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr "Importassistent in einigen Teil-Ansichten anzeigen"
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr "Preis in Formularen anzeigen"
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr "Teilpreis in einigen Formularen anzeigen"
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr "Preis in Stückliste anzeigen"
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr "Preisinformationen in Stücklisten Tabellen einbeziehen"
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr "Preisverlauf anzeigen"
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr "Historische Preise für Teil anzeigen"
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr "Verwandte Teile anzeigen"
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr "Verwandte Teile eines Teils anzeigen"
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr "Ausgangsbestand erstellen"
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr "Ausgangsbestand beim Erstellen von Teilen erstellen"
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr "Interne Preise"
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr "Interne Preise für Teile aktivieren"
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr "Interner Preis als Stückliste-Preis"
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr "Interner Preis (falls vorhanden) in Stücklisten-Preisberechnungen verwenden"
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr "Anzeigeformat für Teilenamen"
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr "Format für den Namen eines Teiles"
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr "Labeldruck aktivieren"
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr "Labeldruck über die Website aktivieren"
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr "Berichte aktivieren"
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr "Berichterstellung aktivieren"
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Entwickler-Modus"
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Berichte im Entwickler-Modus generieren (als HTML)"
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr "Seitengröße"
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr "Standardseitenformat für PDF-Bericht"
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr "Testberichte aktivieren"
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr "Erstellung von Test-Berichten aktivieren"
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr "Testberichte anhängen"
 
-#: common/models.py:1088
+#: common/models.py:1114
 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:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr "Losnummer Vorlage"
 
-#: common/models.py:1095
+#: common/models.py:1121
 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:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr "Bestands-Ablauf"
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr "Ablaufen von Bestand ermöglichen"
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr "Abgelaufenen Bestand verkaufen"
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr "Verkauf von abgelaufenem Bestand erlaubt"
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr "Bestands-Stehzeit"
 
-#: common/models.py:1115
+#: common/models.py:1141
 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:1117
+#: common/models.py:1143
 msgid "days"
 msgstr "Tage"
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr "Abgelaufenen Bestand verbauen"
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr "Verbauen von abgelaufenen Bestand erlaubt"
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr "Bestands-Eigentümerkontrolle"
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren"
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
-msgstr "Bauauftrag-Referenz Präfix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
+msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
-msgstr "Präfix für Bauauftrag-Referenz"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
+msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
-msgstr "Bauauftrag-Referenz RegEx"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
+msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
-msgstr "RegEx Muster für die Zuordnung von Bauauftrag-Referenzen"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
+msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr "Auftrags-Referenz Präfix"
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr "Präfix für Auftrags-Referenz"
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr "Auftrag Standardsendung"
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr "Erstelle eine Standardsendung für Aufträge"
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
-msgstr "Bestellungs-Referenz Präfix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
+msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
-msgstr "Präfix für Bestellungs-Referenz"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
+msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr "Passwort vergessen aktivieren"
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren"
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr "Anmeldung erlauben"
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren"
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr "SSO aktivieren"
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr "SSO auf den Anmeldeseiten aktivieren"
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr "Email-Adresse erforderlich"
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben"
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr "SSO-Benutzer automatisch ausfüllen"
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen"
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr "E-Mail zweimal"
 
-#: common/models.py:1203
+#: common/models.py:1227
 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:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr "Passwort zweimal"
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen"
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr "Gruppe bei Registrierung"
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden"
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr "MFA erzwingen"
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden."
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr "Plugins beim Start prüfen"
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr "Beim Start überprüfen, ob alle Plugins installiert sind - Für Container aktivieren"
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr "URL-Integration aktivieren"
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr "Plugins zum Hinzufügen von URLs aktivieren"
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr "Navigations-Integration aktivieren"
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr "Plugins zur Integration in die Navigation aktivieren"
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr "App-Integration aktivieren"
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr "Plugins zum Hinzufügen von Apps aktivieren"
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr "Terminplan-Integration aktivieren"
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Geplante Aufgaben aktivieren"
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr "Ereignis-Integration aktivieren"
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr "Plugins ermöglichen auf interne Ereignisse zu reagieren"
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)"
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr "Abonnierte Teile anzeigen"
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr "Zeige abonnierte Teile auf der Startseite"
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr "Abonnierte Kategorien anzeigen"
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr "Zeige abonnierte Teilkategorien auf der Startseite"
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr "Neueste Teile anzeigen"
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr "Zeige neueste Teile auf der Startseite"
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr "Aktuelle Teile-Stände"
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr "Anzahl der neusten Teile auf der Startseite"
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr "Nicht validierte Stücklisten anzeigen"
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite"
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr "Neueste Bestandänderungen anzeigen"
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite"
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr "aktueller Bestand"
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr "Anzahl des geänderten Bestands auf der Startseite"
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr "Niedrigen Bestand anzeigen"
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr "Zeige geringen Bestand auf der Startseite"
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr "Lerren Bestand anzeigen"
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite"
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr "Benötigten Bestand anzeigen"
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Zeige Bestand für Bauaufträge auf der Startseite"
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr "Abgelaufenen Bestand anzeigen"
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr "Zeige abgelaufene Lagerbestände auf der Startseite"
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr "Alten Bestand anzeigen"
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr "Zeige überfällige Lagerartikel auf der Startseite"
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr "Ausstehende Bauaufträge anzeigen"
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr "Zeige ausstehende Bauaufträge auf der Startseite"
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr "Zeige überfällige Bauaufträge"
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr "Zeige überfällige Bauaufträge auf der Startseite"
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr "Ausstehende POs anzeigen"
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr "Zeige ausstehende POs auf der Startseite"
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr "Überfällige POs anzeigen"
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr "Zeige überfällige POs auf der Startseite"
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr "Ausstehende SOs anzeigen"
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr "Zeige ausstehende SOs auf der Startseite"
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr "Überfällige SOs anzeigen"
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr "Zeige überfällige SOs auf der Startseite"
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr "Label inline anzeigen"
 
-#: common/models.py:1438
+#: common/models.py:1462
 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:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr "Berichte inline anzeigen"
 
-#: common/models.py:1445
+#: common/models.py:1469
 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:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr "Teile suchen"
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr "Teile in der Suchvorschau anzeigen"
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr "Zuliefererteile durchsuchen"
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr "Zuliefererteile in der Suchvorschau anzeigen"
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr "Herstellerteile durchsuchen"
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr "Herstellerteile in der Suchvorschau anzeigen"
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr "Inaktive Teile ausblenden"
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr "Inaktive Teile in der Suchvorschau ausblenden"
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr "Kategorien durchsuchen"
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr "Teilekategorien in der Suchvorschau anzeigen"
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr "Bestand durchsuchen"
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr "Lagerartikel in Suchvorschau anzeigen"
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr "Nicht verfügbare Artikel ausblenden"
 
-#: common/models.py:1494
+#: common/models.py:1518
 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:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr "Lagerorte durchsuchen"
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr "Lagerorte in Suchvorschau anzeigen"
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr "Firmen durchsuchen"
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr "Firmen in der Suchvorschau anzeigen"
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr "Bestellungen durchsuchen"
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr "Bestellungen in der Suchvorschau anzeigen"
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr "Inaktive Bestellungen ausblenden"
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr "Inaktive Bestellungen in der Suchvorschau ausblenden"
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr "Aufträge durchsuchen"
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr "Aufträge in der Suchvorschau anzeigen"
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr "Inaktive Aufträge ausblenden"
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr "Inaktive Aufträge in der Suchvorschau ausblenden"
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr "Anzahl Suchergebnisse"
 
-#: common/models.py:1543
+#: common/models.py:1567
 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:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr "zeige Bestand in Eingabemasken"
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken"
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr "Esc-Taste schließt Formulare"
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr "Benutze die Esc-Taste, um Formulare zu schließen"
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr "Fixierter Navigationsleiste"
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr "Position der Navigationsleiste am oberen Bildschirmrand fixieren"
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr "Datumsformat"
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr "Bevorzugtes Format für die Anzeige von Daten"
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Teilzeitplanung"
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr "Zeige Zeitplanung für Teile"
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr "Preisstaffelungs Anzahl"
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr "Preis"
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr "Stückpreis für die angegebene Anzahl"
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr "Endpunkt"
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr "Endpunkt, an dem dieser Webhook empfangen wird"
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr "Name für diesen Webhook"
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr "Aktiv"
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr "Ist dieser Webhook aktiv"
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr "Token"
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr "Token für Zugang"
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr "Geheimnis"
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr "Shared Secret für HMAC"
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr "Nachrichten-ID"
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr "Eindeutige Kennung für diese Nachricht"
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr "Host"
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr "Host von dem diese Nachricht empfangen wurde"
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr "Kopfzeile"
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr "Header dieser Nachricht"
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr "Body"
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr "Body dieser Nachricht"
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr "Endpunkt, über den diese Nachricht empfangen wurde"
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr "Bearbeitet"
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?"
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr "Datei hochgeladen"
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr "Übereinstimmende Felder"
 
@@ -2611,15 +2687,6 @@ msgstr "Teile importiert"
 msgid "Previous Step"
 msgstr "Vorheriger Schritt"
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr "URL"
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr "Bild-URL"
-
 #: company/models.py:98
 msgid "Company description"
 msgstr "Firmenbeschreibung"
@@ -2630,7 +2697,7 @@ msgstr "Firmenbeschreibung"
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr "Website"
 
@@ -2707,9 +2774,9 @@ msgstr "ist Hersteller"
 msgid "Does this company manufacture parts?"
 msgstr "Produziert diese Firma Teile?"
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr "Währung"
 
@@ -2717,9 +2784,9 @@ msgstr "Währung"
 msgid "Default currency used for this company"
 msgstr "Standard-Währung für diese Firma"
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr "Basisteil"
 
@@ -2731,11 +2798,11 @@ msgstr "Teil auswählen"
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr "Hersteller"
 
@@ -2745,11 +2812,11 @@ msgstr "Hersteller auswählen"
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr "MPN"
 
@@ -2778,8 +2845,8 @@ msgstr "Parametername"
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr "Wert"
@@ -2791,7 +2858,7 @@ msgstr "Parameterwert"
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr "Einheiten"
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren"
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr "Zulieferer"
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr "Zulieferer auswählen"
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr "SKU (Lagerbestandseinheit)"
 
@@ -2846,7 +2913,7 @@ msgstr "Zuliefererbeschreibung des Teils"
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr "Notiz"
 
@@ -2860,7 +2927,7 @@ msgstr "Mindestpreis"
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr "Verpackungen"
 
@@ -2879,10 +2946,10 @@ msgstr "Mehrere bestellen"
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr "Verfügbar"
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr "Letzte Aktualisierung"
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr "Standard-Währung für diesen Zulieferer"
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr "Währungscode"
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr "Firma"
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr "Bestellung anlegen"
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr "Firmeninformation bearbeiten"
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr "Firma bearbeiten"
 
@@ -2953,14 +3020,14 @@ msgstr "Neues Bild hochladen"
 msgid "Download image from URL"
 msgstr "Bild von URL herunterladen"
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr "Kunde"
 
@@ -2977,6 +3044,11 @@ msgstr "Telefon"
 msgid "Upload Image"
 msgstr "Bild hochladen"
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr "Bild herunterladen"
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr "Neuer Auftrag"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr "Zugeordneter Bestand"
 
@@ -3082,7 +3154,7 @@ msgstr "Zugeordneter Bestand"
 msgid "Supplier List"
 msgstr "Zulieferer-Liste"
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr "Teil bestellen"
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr "Herstellerteil bearbeiten"
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr "Herstellerteil löschen"
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr "Keine Herstellerdaten verfügbar"
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr "Zuliefererteil entfernen"
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr "Löschen"
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr "Zugewiesene Lagerartikel"
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr "Zuliefererteil"
 
@@ -3198,7 +3270,7 @@ msgstr "Verfügbarkeit aktualisieren"
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr "Zuliefererteil bearbeiten"
 
@@ -3282,7 +3354,7 @@ msgstr "Teilverfügbarkeit aktualisieren"
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr "Bepreisung"
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr "Lagerartikel"
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr "Neuer Zulieferer"
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr "Neuer Hersteller"
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr "Kunden"
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr "Neuer Kunde"
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr "Firmen"
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr "Neue Firma"
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr "Bild herunterladen"
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr "Bildgröße überschreitet maximal-erlaubte Größe für Downloads"
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr "Ungültige Antwort {code}"
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr "Angegebene URL ist kein gültiges Bild"
-
 #: label/models.py:102
 msgid "Label name"
 msgstr "Label Name"
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr "Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)"
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr "Filter"
 
@@ -3422,438 +3477,438 @@ msgstr "Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)"
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr "Teile-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)"
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr "Bestellungs-Beschreibung"
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr "Link auf externe Seite"
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr "Erstellt von"
 
-#: order/models.py:151
+#: order/models.py:99
 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:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr "Bestell-Notizen"
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr "Bestell-Referenz"
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr "Bestellungs-Status"
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr "Firma bei der die Teile bestellt werden"
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr "Zulieferer-Referenz"
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr "Zulieferer Bestellreferenz"
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr "Empfangen von"
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr "Aufgabedatum"
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr "Datum an dem die Bestellung aufgegeben wurde"
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr "Ziel-Versanddatum"
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr "Geplantes Lieferdatum für Auftrag."
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr "Datum an dem der Auftrag fertigstellt wurde"
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr "Teile-Zulieferer muss dem Zulieferer der Bestellung entsprechen"
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr "Anzahl muss eine positive Zahl sein"
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr "Firma an die die Teile verkauft werden"
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr "Kundenreferenz"
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr "Bestellreferenz"
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr "Zieldatum für Auftrags-Fertigstellung."
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr "Versanddatum"
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr "Versand von"
 
-#: order/models.py:737
+#: order/models.py:714
 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:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr "Nur ein ausstehender Auftrag kann als abgeschlossen markiert werden"
 
-#: order/models.py:744
+#: order/models.py:721
 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:747
+#: order/models.py:724
 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:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr "Anzahl"
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr "Position - Referenz"
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr "Position - Notizen"
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr "Lieferdatum für diese Position"
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr "Kontext"
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr "Zusätzlicher Kontext für diese Zeile"
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr "Stückpreis"
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr "Lieferantenteil muss mit Lieferant übereinstimmen"
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr "gelöscht"
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr "Bestellung"
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr "Bestellung"
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr "Zuliefererteil"
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr "Empfangen"
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr "Empfangene Objekt-Anzahl"
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr "Preis"
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr "Preis pro Einheit"
 
-#: order/models.py:1048
+#: order/models.py:1026
 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:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr "Verkaufspreis"
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr "Stückverkaufspreis"
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr "Versendete Menge"
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr "Versanddatum"
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr "Kontrolliert von"
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr "Benutzer, der diese Sendung kontrolliert hat"
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr "Sendungsnummer"
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr "Versandhinweise"
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr "Sendungsverfolgungsnummer"
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr "Informationen zur Sendungsverfolgung"
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr "Rechnungsnummer"
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr "Referenznummer für zugehörige Rechnung"
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr "Sendung wurde bereits versandt"
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr "Sendung hat keine zugewiesene Lagerartikel"
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr "Lagerartikel wurde nicht zugewiesen"
-
-#: order/models.py:1392
-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:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr "Kann Lagerartikel keiner Zeile ohne Teil hinzufügen"
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten"
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr "Zu viele Lagerartikel zugewiesen"
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr "Anzahl für serialisierte Lagerartikel muss 1 sein"
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr "Auftrag gehört nicht zu Sendung"
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr "Sendung gehört nicht zu Auftrag"
-
-#: order/models.py:1419
-msgid "Line"
-msgstr "Position"
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr "Sendung"
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr "Sendungsnummer"
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr "Versandhinweise"
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr "Sendungsverfolgungsnummer"
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr "Informationen zur Sendungsverfolgung"
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr "Rechnungsnummer"
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr "Referenznummer für zugehörige Rechnung"
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr "Sendung wurde bereits versandt"
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr "Sendung hat keine zugewiesene Lagerartikel"
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr "Lagerartikel wurde nicht zugewiesen"
+
+#: order/models.py:1370
+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:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr "Kann Lagerartikel keiner Zeile ohne Teil hinzufügen"
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten"
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr "Zu viele Lagerartikel zugewiesen"
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr "Anzahl für serialisierte Lagerartikel muss 1 sein"
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr "Auftrag gehört nicht zu Sendung"
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr "Sendung gehört nicht zu Auftrag"
+
+#: order/models.py:1397
+msgid "Line"
+msgstr "Position"
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr "Sendungsnummer-Referenz"
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr "Position"
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr "Lagerartikel für Zuordnung auswählen"
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr "Anzahl für Bestandszuordnung eingeben"
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr "Währung"
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr "Bestellung kann nicht verworfen werden"
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr "Der Auftrag ist nicht offen"
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr "Kaufpreiswährung"
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr "Zuliefererteil muss ausgewählt werden"
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr "Bestellung muss angegeben sein"
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr "Lieferant muss mit der Bestellung übereinstimmen"
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr "Die Bestellung muss mit dem Lieferant übereinstimmen"
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr "Position"
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr "Position stimmt nicht mit Kaufauftrag überein"
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr "Zielort für empfangene Teile auswählen"
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr "Losnummer für eingehende Lagerartikel"
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr "Seriennummern für eingehende Lagerartikel"
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr "Barcode-Hash"
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr "Einzigartiger Identifikator"
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr "Barcode ist bereits in Verwendung"
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr "Ganzzahl für verfolgbare Teile erforderlich"
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr "Positionen müssen angegeben werden"
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr "Ziel-Lagerort muss angegeben werden"
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr "Barcode muss eindeutig sein"
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr "Verkaufspreis-Währung"
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr "Keine Sendungsdetails angegeben"
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr "Position ist nicht diesem Auftrag zugeordnet"
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr "Anzahl muss positiv sein"
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr "Seriennummern zum Zuweisen eingeben"
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr "Sendung wurde bereits versandt"
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr "Sendung ist nicht diesem Auftrag zugeordnet"
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr "Folgende Serienummern konnten nicht gefunden werden"
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr "Folgende Seriennummern sind bereits zugewiesen"
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr "Unvollständig"
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr "Aufgegeben"
 
@@ -3996,10 +4051,10 @@ msgstr "Zulieferer-Teil auswählen"
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr "Bestellungs-Positionen"
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr "Position hinzufügen"
 
@@ -4063,7 +4118,7 @@ msgstr "Empfangene Teile"
 msgid "Order Notes"
 msgstr "Notizen zur Bestellung"
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr "Neue Auftragspositionen hinzufügen"
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr "Paketliste drucken"
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr "Abgeschlossene Sendungen"
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr "Dieser Auftrag ist nicht vollständig zugeordnet"
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr "Kundenreferenz"
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr "Ausstehende Sendungen"
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr "Aktionen"
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr "Gesamtbestand"
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr "Verfügbarer Bestand"
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr "Bestellt"
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr "Menge für die Preisberechnung"
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr "Beschreibung für diesen Test eingeben"
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr "Benötigt"
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil"
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr "Optional"
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr "Prüfsumme der Stückliste"
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr "Geerbt"
 
@@ -4616,7 +4672,7 @@ 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:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr "Varianten zulassen"
 
@@ -4624,7 +4680,7 @@ msgstr "Varianten zulassen"
 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:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr "Menge muss eine Ganzzahl sein"
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr "Doppelte Beziehung existiert bereits"
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr "Kaufwährung dieses Lagerartikels"
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr "Bauteil auswählen, von dem Stückliste kopiert wird"
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr "Bestehende Daten entfernen"
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr "Bestehende Stücklisten-Positionen vor dem Kopieren entfernen"
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr "Vererbtes einschließen"
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr "Stücklisten-Positionen einbeziehen, die von Vorlage-Teilen geerbt werden"
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr "Ungültige Zeilen überspringen"
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr "Aktiviere diese Option, um ungültige Zeilen zu überspringen"
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr "Ersatzteile kopieren"
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr "Ersatzteile beim Duplizieren von Stücklisten-Positionen kopieren"
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr "Bestehende Stückliste löschen"
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr "Bestehende Stücklisten-Positionen vor dem Importieren entfernen"
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr "Keine Bauteilspalte angegeben"
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr "Mehrere übereinstimmende Teile gefunden"
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr "Keine passenden Teile gefunden"
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr "Teil ist nicht als Komponente angelegt"
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr "Menge nicht angegeben"
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr "Ungültige Menge"
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr "Mindestens eine Stückliste-Position ist erforderlich"
 
@@ -4824,7 +4880,7 @@ msgstr "Pfad zur Kategorie"
 msgid "Top level part category"
 msgstr "Oberste Teil-Kategorie"
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr "Unter-Kategorien"
@@ -4837,7 +4893,7 @@ msgstr "Teile (inklusive Unter-Kategorien)"
 msgid "Create new part"
 msgstr "Neues Teil anlegen"
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr "Neues Teil"
 
@@ -4862,19 +4918,19 @@ msgstr "Label drucken"
 msgid "Part Parameters"
 msgstr "Teilparameter"
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr "Teil-Kategorie hinzufügen"
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr "Teil hinzufügen"
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr "Ein weiteres Teil anlegen"
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr "Teil erfolgreich angelegt"
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr "Teil ist virtuell (kein physisches Teil)"
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr "Inaktiv"
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr "Teildetails anzeigen"
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr "Dieses Teil ist eine Variante von %(link)s"
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr "Auf Lager"
 
@@ -5216,7 +5273,7 @@ msgstr "Zu Bauaufträgen zugeordnet"
 msgid "Allocated to Sales Orders"
 msgstr "Zur Bestellung zugeordnet"
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr "Herstellbar"
 
@@ -5247,7 +5304,7 @@ msgstr "Berechnen"
 msgid "No matching images found"
 msgstr "Keine passenden Bilder gefunden"
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr "Teildetails ausblenden"
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr "Gesamtkosten"
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr "Keine Zulieferer-Preise verfügbar"
 
@@ -5357,7 +5414,7 @@ msgstr "Verkaufspreis anzeigen"
 msgid "Calculation parameters"
 msgstr "Berechnungsparameter"
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr "Zuliefererkosten"
 
@@ -5450,40 +5507,40 @@ msgstr "Neue Teilevariante anlegen"
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr "Neue Variante von Vorlage anlegen <em>'%(full_name)s'</em>."
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr "Unbekannte Datenbank"
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr "{title} v{version}"
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr "Referenzen zuteilen"
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr "Kein(e)"
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr "Teil-QR-Code"
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr "Teilbild auswählen"
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr "Teilbild aktualisiert"
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr "Teilbild nicht gefunden"
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr "Teilbepreisung"
 
@@ -5601,11 +5658,11 @@ msgstr "Plugin"
 msgid "Method"
 msgstr "Methode"
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr "Kein Autor gefunden"
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr "Kein Datum gefunden"
 
@@ -5742,35 +5799,35 @@ msgstr "Teile-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)"
 msgid "Purchase order query filters"
 msgstr "Bestellungs-Abfragefilter"
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr "Auftrags-Abfragefilter"
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr "Snippet"
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr "Berichts-Snippet"
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr "Snippet-Beschreibung"
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr "Ressource"
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr "Berichts-Ressource"
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr "Ressource-Beschreibung"
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr "benötigt für"
 
@@ -5784,11 +5841,11 @@ msgstr "Lagerartikel Test-Bericht"
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr "Seriennummer"
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr "Testergebnisse"
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr "Test"
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr "Ergebnis"
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr "Datum"
 
@@ -5828,7 +5885,7 @@ msgstr "Verbaute Objekte"
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr "Seriennummer"
 
@@ -5844,57 +5901,57 @@ msgstr "Gültiges Teil muss angegeben werden"
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr "Seriennummern können für nicht verfolgbare Teile nicht angegeben werden"
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr "Besitzer"
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr "Besitzer auswählen"
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr "Ein Lagerartikel mit dieser Seriennummer existiert bereits"
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr "Teile-Typ ('{pf}') muss {pe} sein"
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr "Anzahl muss für Objekte mit Seriennummer 1 sein"
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr "Seriennummer kann nicht gesetzt werden wenn die Anzahl größer als 1 ist"
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr "Teil kann nicht zu sich selbst gehören"
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr "Teil muss eine Referenz haben wenn is_building wahr ist"
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr "Referenz verweist nicht auf das gleiche Teil"
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr "Eltern-Lagerartikel"
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr "Basis-Teil"
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr "Passendes Zuliefererteil für diesen Lagerartikel auswählen"
 
@@ -6030,7 +6087,7 @@ msgstr "Lagerartikel wird aktuell produziert"
 msgid "Serialized stock cannot be merged"
 msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden"
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr "Artikel duplizeren"
 
@@ -6050,160 +6107,164 @@ msgstr "Status-Codes müssen zusammenpassen"
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr "Lagerartikel kann nicht bewegt werden, da kein Bestand vorhanden ist"
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr "Eintrags-Notizen"
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr "Wert muss für diesen Test angegeben werden"
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr "Anhang muss für diesen Test hochgeladen werden"
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr "Name des Tests"
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr "Testergebnis"
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr "Test Ausgabe Wert"
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr "Test Ergebnis Anhang"
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr "Test Notizen"
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr "Kaufpreis für diesen Lagerartikel"
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr "Anzahl der zu serialisierenden Lagerartikel eingeben"
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr "Anzahl darf nicht die verfügbare Menge überschreiten ({q})"
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr "Seriennummern für neue Teile eingeben"
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr "Ziel-Bestand"
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr "Optionales Notizfeld"
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr "Seriennummern können diesem Teil nicht zugewiesen werden"
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr "Seriennummern existieren bereits"
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr "Lagerartikel für Installation auswählen"
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr "Lagerartikel ist nicht verfügbar"
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr "Ausgewähltes Teil ist nicht in der Stückliste"
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr "Ziel Lagerort für unverbautes Objekt"
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr " Transaktionsnotizen hinzufügen (optional)"
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr "Teil muss verkaufbar sein"
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr "Artikel ist einem Kundenauftrag zugeordnet"
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr "Artikel ist einem Fertigungsauftrag zugeordnet"
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr "Kunde zum Zuweisen von Lagerartikel"
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr "Ausgewählte Firma ist kein Kunde"
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr "Notizen zur Lagerzuordnung"
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr "Eine Liste der Lagerbestände muss angegeben werden"
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr "Notizen zur Lagerartikelzusammenführung"
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr "Unterschiedliche Lieferanten erlauben"
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Lieferanten erlauben"
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr "Unterschiedliche Status erlauben"
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Status-Codes erlauben"
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr "Mindestens zwei Lagerartikel müssen angegeben werden"
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr "Primärschlüssel Lagerelement"
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr "Bestandsbewegungsnotizen"
 
@@ -6228,7 +6289,7 @@ msgstr "Testdaten"
 msgid "Test Report"
 msgstr "Test-Bericht"
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr "Testdaten löschen"
 
@@ -6240,7 +6301,7 @@ msgstr "Testdaten hinzufügen"
 msgid "Installed Stock Items"
 msgstr "Installierte Lagerartikel"
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr "Lagerartikel installieren"
 
@@ -6248,7 +6309,7 @@ msgstr "Lagerartikel installieren"
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr "Testergebnis hinzufügen"
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr "Verfügbare Menge"
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr "Kein Lagerort gesetzt"
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr "Dieser Lagerartikel lief am %(item.expiry_date)s ab"
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr "abgelaufen"
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr "Dieser Lagerartikel läuft am %(item.expiry_date)s ab"
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr "überfällig"
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr "Zuletzt aktualisiert"
 
@@ -6678,7 +6739,7 @@ msgstr "Benachrichtigungsverlauf"
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr "Benachrichtigungen löschen"
 
@@ -6709,7 +6770,7 @@ msgstr "Kein Benachrichtigungsverlauf"
 msgid "Delete all read notifications"
 msgstr "Lösche alle gelesenen Benachrichtigungen"
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr "Benachrichtigung löschen"
@@ -7370,7 +7431,7 @@ msgstr "E-Mail-Adresse bestätigen"
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr "Bitte bestätigen Sie, dass <a href=\"mailto:%(email)s\">%(email)s</a> eine E-Mail-Adresse für den Benutzer %(user_display)s ist."
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "Bestätigen"
 
@@ -7542,7 +7603,7 @@ msgstr "Anhang hinzufügen"
 msgid "Delete selected attachments"
 msgstr "Markierte Anhänge löschen"
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr "Anhänge entfernen"
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr "Bei den folgenden Teilen gibt es wenige Lagerartikel"
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr "Benötigte Menge"
 
@@ -7610,22 +7671,6 @@ msgstr "Mindestmenge"
 msgid "Expand all rows"
 msgstr "Alle Zeilen erweitern"
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr "URL für Bild-Donwload angeben"
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr "Muss eine gültige URL für ein Bild sein"
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr "Der angegebene Server muss erreichbar sein"
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr "Das Bild darf nicht größer als die maximal-erlaubte Größe sein"
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr "Keine Antwort"
@@ -7694,23 +7739,23 @@ msgstr "Fehler-Code"
 msgid "All selected attachments will be deleted"
 msgstr "Alle ausgewählten anhänge werden gelöscht"
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr "Keine Anhänge gefunden"
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr "Anhang bearbeiten"
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr "Hochladedatum"
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr "Anhang bearbeiten"
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr "Anhang löschen"
 
@@ -7820,10 +7865,10 @@ msgstr "Zeilendaten anzeigen"
 msgid "Row Data"
 msgstr "Zeilendaten"
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr "Schliessen"
@@ -7833,22 +7878,22 @@ msgid "Download BOM Template"
 msgstr "Vorlage einer Stückliste herunterladen"
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr "Format"
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr "Dateiformat auswählen"
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
-msgstr "Kaskadierend"
+msgid "Multi Level BOM"
+msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
-msgstr "Kaskadierende Stückliste herunterladen"
+msgid "Include BOM data for subassemblies"
+msgstr ""
 
 #: templates/js/translated/bom.js:301
 msgid "Levels"
@@ -7858,422 +7903,426 @@ msgstr "Ebenen"
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr "Maximale Anzahl an Ebenen für Stückliste-Export auswählen (0 = alle Ebenen)"
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr "Parameter-Daten einschließen"
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr "Teil-Parameter in Stückliste-Export einschließen"
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr "Bestand einschließen"
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr "Teil-Bestand in Stückliste-Export einschließen"
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr "Herstellerdaten einschließen"
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr "Teil-Herstellerdaten in Stückliste-Export einschließen"
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr "Zulieferer einschließen"
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr "Zulieferer-Daten in Stückliste-Export einschließen"
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr "Ersatzteil entfernen"
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr "Wählen Sie ein neues Ersatzteil aus und fügen Sie sie mit den folgenden Eingaben hinzu"
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr "Sind Sie sicher, dass Sie dieses Ersatzteil entfernen möchten?"
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr "Ersatzteil entfernen"
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr "Ersatzteil hinzufügen"
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr "Stücklisten Ersatzteile bearbeiten"
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht"
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr "Ausgewählte Stücklistenpositionen löschen?"
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr "Stückliste für Bauteile laden"
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr "Ersatzteile verfügbar"
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr "Varianten erlaubt"
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr "Kein Lagerbestand verfügbar"
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr "Beinhaltet Variante und Ersatzbestand"
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr "Beinhaltet Variantenbestand"
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr "Enthält Ersatzbestand"
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr "Ersatzteile"
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr "Kaufpreisspanne"
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr "Durchschnittlicher Kaufpreis"
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr "Stückliste anzeigen"
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr "Stücklisten-Position kontrollieren"
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr "Diese Position wurde kontrolliert"
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr "Ersatzteile bearbeiten"
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr "Stücklisten-Position bearbeiten"
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr "Stücklisten-Position löschen"
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr "Keine Stücklisten-Position(en) gefunden"
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr "benötigtes Teil"
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr "Geerbt von übergeordneter Stückliste"
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr "Bauauftrag bearbeiten"
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr "Bauauftrag erstellen"
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr "Bauauftrag abbrechen"
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr "Sind Sie sicher, dass sie diesen Bauauftrag abbrechen möchten?"
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr "Lagerbestand wurde zu diesem Bauauftrag hinzugefügt"
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr "Für diesen Bau-Auftrag sind noch unvollständige Endprodukte vorhanden"
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr "Bauauftrag ist bereit abgeschlossen zu werden"
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr "Bauauftrag ist unvollständig"
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr "Bauauftrag fertigstellen"
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr "Nächste verfügbare Seriennummer"
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr "Letzte Seriennummer"
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr "Die Stückliste enthält verfolgbare Teile"
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr "Endprodukte müssen individuell angelegt werden"
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr "Nachverfolgbare Teile können Seriennummern haben"
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr "Seriennummeren für mehrere einzelne Endprodukte angeben"
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr "Endprodukt anlegen"
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr "Lagerartikel zu diesem Endprodukt zuweisen"
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr "Bestand von Endpordukt zurücknehmen"
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr "Endprodukt fertigstellen"
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr "Endprodukt entfernen"
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr "Sind Sie sicher, dass sie alle Lagerartikel von diesem Bauauftrag entfernen möchten?"
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr "Lagerartikel zurücknehmen"
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr "Endprodukte auswählen"
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr "Mindestens ein Endprodukt muss ausgewählt werden"
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr "Endprodukt"
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr "Endprodukte fertigstellen"
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr "Endprodukte entfernen"
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr "Keine Allokationen für Bauauftrag gefunden"
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr "Standort nicht angegeben"
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr "Keine aktiven Endprodukte gefunden"
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr "Bestand zuteilen"
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr "Keine nachverfolgten Stücklisten-Einträge für diesen Bauauftrag"
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr "Abgeschlossene Tests"
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr "Keine erforderlichen Tests für diesen Bauauftrag"
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr "Bestands-Zuordnung bearbeiten"
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr "Bestands-Zuordnung löschen"
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr "Zuordnung bearbeiten"
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr "Zuordnung entfernen"
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr "Ersatzteile verfügbar"
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr "Anzahl pro"
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr "Unzureichender Bestand verfügbar"
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr "Ausreichender Bestand verfügbar"
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr "Zugeordnet"
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr "Bestand bauen"
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr "Bestand bestellen"
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr "Bestand zuweisen"
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "Teile auswählen"
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr "Sie müssen mindestens ein Teil auswählen"
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr "Anzahl für Bestandszuordnung eingeben"
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr "Alle Teile zugeordnet"
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr "Alle ausgewählten Teile wurden vollständig zugeordnet"
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr "Wählen Sie den Quellort aus (leer lassen um von allen Standorten zu nehmen)"
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr "Lagerartikel für Bauauftrag zuweisen"
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr "Keine passenden Lagerstandorte"
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr "Keine passenden Lagerbestände"
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr "Automatische Lagerzuordnung"
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr "Lagerartikel werden automatisch diesem Bauauftrag zugewiesen, entsprechend den angegebenen Richtlinien"
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr "Wenn ein Standort angegeben ist, wird der Lagerbestand nur von diesem Ort zugewiesen"
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr "Wenn der Lagerbestand als austauschbar gilt, wird er vom ersten Standort zugewiesen, an dem er gefunden wird"
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr "Wenn ein Ersatzbestand erlaubt ist, wird es dort verwendet, wo kein Vorrat des Primärteils gefunden werden kann"
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr "Lagerartikel zuordnen"
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr "Keine Bauaufträge passen zur Anfrage"
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr "Auswählen"
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr "Bauauftrag ist überfällig"
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr "Fortschritt"
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr "Keine Benutzerinformation"
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr "Keine Teile zugeordnet zu"
 
@@ -8281,7 +8330,7 @@ msgstr "Keine Teile zugeordnet zu"
 msgid "Add Manufacturer"
 msgstr "Hersteller hinzufügen"
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr "Herstellerteil hinzufügen"
 
@@ -8289,99 +8338,99 @@ msgstr "Herstellerteil hinzufügen"
 msgid "Edit Manufacturer Part"
 msgstr "Herstellerteil ändern"
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr "Zulieferer hinzufügen"
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr "Zuliefererteil hinzufügen"
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr "Alle ausgewählten Zulieferteile werden gelöscht"
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr "Zuliefererteil entfernen"
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr "Neue Firma hinzufügen"
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr "Teile geliefert"
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr "Hersteller-Teile"
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr "Keine Firmeninformation gefunden"
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr "Alle ausgewählten Herstellerrteile werden gelöscht"
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr "Herstellerteile löschen"
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr "Alle ausgewählten Parameter werden gelöscht"
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr "Parameter löschen"
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr "Keine Herstellerteile gefunden"
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr "Vorlagenteil"
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr "Baugruppe"
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr "Keine Parameter gefunden"
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr "Parameter bearbeiten"
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr "Parameter löschen"
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr "Parameter bearbeiten"
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr "Parameter löschen"
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr "Keine Zuliefererteile gefunden"
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr "Zuliefererteil bearbeiten"
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr "Zuliefererteil entfernen"
 
@@ -8419,61 +8468,61 @@ msgstr "Filter entfernen"
 msgid "Create filter"
 msgstr "Filter anlegen"
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr "Aktion verboten"
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr "Erstellvorgang nicht erlaubt"
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr "Updatevorgang nicht erlaubt"
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr "Löschvorgang nicht erlaubt"
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr "Anzeigevorgang nicht erlaubt"
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr "Dieses Formular offen lassen"
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr "Gib eine gültige Nummer ein"
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr "Fehler in Formular"
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr "Keine Ergebnisse gefunden"
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr "Suche"
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr "Eingabe leeren"
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr "Dateispalte"
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr "Feldname"
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr "Spalten auswählen"
 
@@ -8622,25 +8671,25 @@ msgstr "Standort-ID"
 msgid "Build ID"
 msgstr "Bauauftrag-ID"
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr "Bestell-ID"
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr "Sendungs-ID"
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr "Kategorie-ID"
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr "Herstellerteil-ID"
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr "Zuliefererteil-ID"
 
@@ -8664,381 +8713,381 @@ msgstr "Keine ungelesenen Benachrichtigungen"
 msgid "Notifications will load here"
 msgstr "Benachrichtigungen erscheinen hier"
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr "Dieser Sendung wurden keine Artikel zugewiesen"
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr "Die folgenden Artikel werden verschickt"
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr "Sendung fertigstellen"
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr "Sendung bestätigen"
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr "Keine ausstehenden Sendungen gefunden"
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr "Keine Lagerartikel für offene Sendungen zugewiesen"
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr "Überspringen"
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr "Bestellung vervollständigen"
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr "Diese Bestellung als vollständig markieren?"
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr "Alle Einträge wurden erhalten"
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr "Diese Bestellung enthält Positionen, die nicht als empfangen markiert wurden."
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr "Fertigstellen dieser Bestellung bedeutet, dass sie und ihre Positionen nicht länger bearbeitbar sind."
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr "Bestellung abbrechen"
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr "Sind Sie sicher, dass Sie diese Bestellung abbrechen möchten?"
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr "Diese Bestellung kann nicht storniert werden"
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr "Bestellung aufgeben"
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr "Nachdem diese Bestellung plaziert ist können die Positionen nicht länger bearbeitbar ist."
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr "Auftrag stornieren"
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr "Abbruch dieser Bestellung bedeutet, dass sie nicht länger bearbeitbar ist."
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr "Sendung anlegen"
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr "Kunden hinzufügen"
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr "Auftrag anlegen"
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr "Bestellung exportieren"
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr "Mindestens ein kaufbares Teil muss ausgewählt werden"
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr "Zu bestellende Menge"
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr "Neues Zuliefererteil"
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr "Neue Bestellung"
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr "Zur Bestellung hinzufügen"
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr "Keine passenden Lieferantenteile"
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr "Keine passenden Bestellungen"
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr "Positionen auswählen"
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr "Mindestens eine Position muss ausgewählt werden"
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr "Losnummer hinzufügen"
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr "Seriennummern hinzufügen"
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr "Zu erhaltende Menge"
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr "Status"
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr "Bestellnummer"
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr "Bestellt"
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr "Zu erhaltende Menge"
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr "Empfang der Teile bestätigen"
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr "Bestellpositionen erhalten"
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr "Keine Bestellungen gefunden"
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr "Bestellung überfällig"
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr "Positionen"
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr "Position duplizieren"
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr "Position bearbeiten"
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr "Position löschen"
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr "Keine Positionen gefunden"
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr "Summe"
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr "Stück-Preis"
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr "Gesamtpreis"
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr "Diese Position ist überfällig"
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr "Position empfangen"
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr "Position duplizieren"
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr "Position bearbeiten"
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr "Position löschen"
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr "Position duplizieren"
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr "Zeile bearbeiten"
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr "Zeile löschen"
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr "Position duplizieren"
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr "Zeile bearbeiten"
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr "Zeile löschen"
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr "Keine passenden Positionen gefunden"
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr "Keine Aufträge gefunden"
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr "Ungültiger Kunde"
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr "Sendung bearbeiten"
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr "Sendung fertigstellen"
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr "Sendung löschen"
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr "Sendung bearbeiten"
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr "Sendung löschen"
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr "Keine passenden Sendungen gefunden"
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr "Sendungsreferenz"
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr "Nicht versandt"
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr "Nachverfolgen"
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr "Rechnung"
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr "Sendung hinzufügen"
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr "Bestandszuordnung bestätigen"
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr "Artikel zu Kundenauftrag zuweisen"
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr "Keine Allokationen für Verkaufsaufträge gefunden"
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr "Bestandszuordnung bearbeiten"
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr "Löschvorgang bestätigen"
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr "Bestands-Zuordnung löschen"
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr "an Kunde versand"
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr "Lagerstandort nicht angegeben"
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr "Seriennummern zuweisen"
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr "Bestand kaufen"
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr "Preis berechnen"
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr "Kann nicht gelöscht werden, da Artikel versandt wurden"
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr "Kann nicht gelöscht werden, da Artikel zugewiesen sind"
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr "Seriennummern zuweisen"
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr "Stückpreis aktualisieren"
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr "Keine passenden Positionen gefunden"
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr "Keine passenden Positionen gefunden"
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr "Stückliste kopieren"
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr "Bestand niedrig"
 
@@ -9243,11 +9292,11 @@ msgstr "Verkäufliches Teil"
 msgid "No variants found"
 msgstr "Keine Varianten gefunden"
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr "Teile-Beziehung löschen"
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr "Teile-Beziehung löschen"
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr "Keine Kategorie"
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr "Listenansicht"
 
@@ -9288,7 +9337,7 @@ msgstr "Teil-Kategorie wählen"
 msgid "Category is required"
 msgstr "Kategorie erforderlich"
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr "Baumansicht"
 
@@ -9296,7 +9345,7 @@ msgstr "Baumansicht"
 msgid "Subscribed category"
 msgstr "Abonnierte Kategorie"
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr "Pfad"
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr "Lagerartikel zerstört"
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr "gelöscht"
 
@@ -9727,95 +9776,95 @@ msgstr "gelöscht"
 msgid "Stocktake"
 msgstr "Inventur"
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr "Zuliefererteil nicht angegeben"
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr "Keine zur Anfrage passenden Lagerartikel"
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr "Status setzen"
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr "Status Code setzen"
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr "Status Code muss ausgewählt werden"
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr "Details"
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr "Artikelinformationen nicht verfügbar"
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr "Standort nicht mehr vorhanden"
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr "Bestellung existiert nicht mehr"
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr "Kunde existiert nicht mehr"
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr "Lagerartikel existiert nicht mehr"
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr "Hinzugefügt"
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr "Entfernt"
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr "Keine installierten Elemente"
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr "Lagerartikel entfernen"
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr "Zu deinstallierende Lagerartikel auswählen"
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr "Einen weiteren Lagerartikel in dieses Teil installiert"
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr "Lagerartikel können nur installiert werden wenn folgende Kriterien erfüllt werden"
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr "Der Lagerartikel ist auf ein Teil verknüpft das in der Stückliste für diesen Lagerartikel ist"
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr "Dieser Lagerartikel ist aktuell vorhanden"
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr "Der Lagerbestand ist nicht bereits in einem anderen Bestand installiert"
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr "Der Lagerbestand wird entweder mit einem Batch-Code oder mit Seriennummer verfolgt"
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr "Teil zur Installation auswählen"
 
@@ -9831,223 +9880,223 @@ msgstr "Baugruppe"
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr "überprüft"
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr "Bestand an Varianten zulassen"
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr "Unter-Lagerorte einschließen"
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr "Lagerorte einschließen"
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr "Unterkategorien einschließen"
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr "Abonniert"
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
+#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:226
 msgid "Is Serialized"
 msgstr "Hat Seriennummer"
 
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:147
+#: templates/js/translated/table_filters.js:233
 msgid "Serial number GTE"
 msgstr "Seriennummer >="
 
-#: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
+#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/table_filters.js:234
 msgid "Serial number greater than or equal to"
 msgstr "Seriennummer größer oder gleich"
 
-#: templates/js/translated/table_filters.js:147
-#: templates/js/translated/table_filters.js:233
+#: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
 msgid "Serial number LTE"
 msgstr "Seriennummer <="
 
-#: templates/js/translated/table_filters.js:148
-#: templates/js/translated/table_filters.js:234
+#: templates/js/translated/table_filters.js:152
+#: templates/js/translated/table_filters.js:238
 msgid "Serial number less than or equal to"
 msgstr "Seriennummern kleiner oder gleich"
 
-#: templates/js/translated/table_filters.js:151
-#: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr "Seriennummer"
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr "Losnummer"
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr "Aktive Teile"
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr "Bestand aktiver Teile anzeigen"
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr "Teil ist eine Baugruppe"
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr "Ist zugeordnet"
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr "Teil wurde zugeordnet"
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr "Lagerartikel ist zur Verwendung verfügbar"
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr "Bestand in Unter-Lagerorten einschließen"
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr "Zeige aufgebrauchte Lagerartikel"
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr "Zeige Objekte welche im Lager sind"
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr "In Arbeit"
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr "Elemente, die in Produktion sind, anzeigen"
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr "Varianten einschließen"
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr "Lagerartikel für Teil-Varianten einschließen"
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr "Installiert"
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr "Lagerartikel, die in anderen Elementen verbaut sind, anzeigen"
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr "zeige zu Kunden zugeordnete Einträge"
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr "Status"
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr "Hat Batch-Code"
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr "Nachverfolgt"
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr "Lagerbestand wird entweder per Batch-Code oder Seriennummer verfolgt"
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr "Hat Einkaufspreis"
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr "Bestand mit Einkaufspreis anzeigen"
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr "Zeige abgelaufene Lagerartikel"
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr "Bestand, der bald ablaufen, anzeigen"
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr "Test bestanden"
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr "Installierte Elemente einschließen"
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr "Bauauftrags-Status"
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr "Mir zugewiesen"
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr "Bestellstatus"
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr "ausstehend"
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr "Teile in Unterkategorien einschließen"
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr "Aktive Teile anzeigen"
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr "Verfügbarer Lagerbestand"
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr "Hat IPN"
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr "Teil hat Interne Teilenummer"
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr "Auf Lager"
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr "Käuflich"
 
diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po
index 8f0319e115..c5076212bf 100644
--- a/InvenTree/locale/el/LC_MESSAGES/django.po
+++ b/InvenTree/locale/el/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:41\n"
 "Last-Translator: \n"
 "Language-Team: Greek\n"
 "Language: el_GR\n"
@@ -25,196 +25,253 @@ msgstr ""
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr ""
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr ""
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr ""
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr ""
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr ""
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr ""
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr ""
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr ""
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr ""
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr ""
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr ""
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr ""
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr ""
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr ""
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr ""
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr ""
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr ""
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr ""
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr ""
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr ""
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr ""
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr ""
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr ""
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr ""
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr ""
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr ""
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr ""
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr ""
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr ""
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr ""
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr ""
 
@@ -273,56 +330,69 @@ msgstr ""
 msgid "Must be a valid number"
 msgstr ""
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr ""
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr ""
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr ""
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr ""
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr ""
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr ""
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr ""
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr ""
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr ""
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr ""
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr ""
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr ""
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr ""
 
@@ -461,8 +531,8 @@ msgstr ""
 msgid "Returned"
 msgstr ""
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr ""
 
@@ -546,7 +616,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr ""
 
@@ -554,7 +624,7 @@ msgstr ""
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr ""
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr ""
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr ""
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr ""
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr ""
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr ""
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
@@ -646,20 +710,20 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr ""
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr ""
 msgid "Build Orders"
 msgstr ""
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr ""
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr ""
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:240
+#: build/models.py:217
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr ""
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr ""
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr ""
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr ""
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr ""
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr ""
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr ""
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr ""
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr ""
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr ""
 
@@ -1360,8 +1424,8 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr ""
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr ""
 
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1438,7 +1502,7 @@ msgstr ""
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr ""
 
@@ -1581,985 +1645,997 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr ""
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr ""
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr ""
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr ""
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr ""
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr ""
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr ""
-
 #: company/models.py:98
 msgid "Company description"
 msgstr ""
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr ""
 
@@ -2707,9 +2774,9 @@ msgstr ""
 msgid "Does this company manufacture parts?"
 msgstr ""
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr ""
 
@@ -2717,9 +2784,9 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2745,11 +2812,11 @@ msgstr ""
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr ""
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr ""
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr ""
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr ""
 
@@ -2953,14 +3020,14 @@ msgstr ""
 msgid "Download image from URL"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -2977,6 +3044,11 @@ msgstr ""
 msgid "Upload Image"
 msgstr ""
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr ""
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr ""
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr ""
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr ""
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr ""
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr ""
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr ""
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr ""
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr ""
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr ""
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr ""
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr ""
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr ""
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr ""
 
@@ -7542,7 +7603,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po
index 60765cc975..09dfa3d5a8 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: 2022-07-04 02:07+0000\n"
+"POT-Creation-Date: 2022-07-09 00:30+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"
@@ -26,11 +26,11 @@ msgstr ""
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr ""
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:374
 #: build/templates/build/sidebar.html:21 company/models.py:523
 #: company/templates/company/sidebar.html:25 order/models.py:929
 #: order/templates/order/po_sidebar.html:11
@@ -41,10 +41,10 @@ msgstr ""
 #: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
 #: stock/serializers.py:909 stock/serializers.py:1041
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1100
+#: templates/js/translated/company.js:952 templates/js/translated/order.js:2040
 #: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3649 templates/js/translated/order.js:4047
+#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
 #: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
 msgid "Notes"
 msgstr ""
@@ -81,7 +81,7 @@ msgstr ""
 msgid "You must type the same email each time."
 msgstr ""
 
-#: InvenTree/forms.py:282 common/models.py:1843
+#: InvenTree/forms.py:282 common/models.py:1850
 msgid "Token"
 msgstr ""
 
@@ -141,7 +141,7 @@ msgstr ""
 
 #: InvenTree/models.py:191 stock/models.py:2096
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr ""
 
@@ -150,11 +150,11 @@ msgid "Select file to attach"
 msgstr ""
 
 #: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: company/models.py:510 order/models.py:136 order/models.py:1268
 #: part/models.py:795
 #: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: templates/js/translated/company.js:645
+#: templates/js/translated/company.js:936 templates/js/translated/order.js:2687
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr ""
@@ -165,7 +165,7 @@ msgid "Link to external URL"
 msgstr ""
 
 #: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr ""
 
@@ -173,9 +173,9 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1619
+#: common/models.py:1620 common/models.py:1843 common/models.py:1844
+#: common/models.py:2106 common/models.py:2107 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
 #: templates/js/translated/stock.js:2576
@@ -215,7 +215,7 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1829
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -223,8 +223,8 @@ msgstr ""
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:534
+#: templates/js/translated/company.js:747
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
 #: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
@@ -242,10 +242,10 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:118
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:847
+#: templates/js/translated/build.js:2480 templates/js/translated/company.js:398
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:1656
 #: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
 #: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
@@ -433,7 +433,7 @@ msgid "InvenTree system health checks failed"
 msgstr ""
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:326
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr ""
 
@@ -462,8 +462,8 @@ msgstr ""
 msgid "Returned"
 msgstr ""
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3275 templates/js/translated/order.js:3624
+#: InvenTree/status_codes.py:141 order/models.py:1151
+#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
 msgid "Shipped"
 msgstr ""
 
@@ -555,7 +555,7 @@ msgstr ""
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr ""
 
@@ -656,7 +656,7 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:106
 #: templates/email/build_order_completed.html:16
 #: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:728
+#: templates/js/translated/build.js:732
 msgid "Build Order"
 msgstr ""
 
@@ -679,10 +679,10 @@ msgstr ""
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3468
-#: templates/js/translated/order.js:3976
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:854
+#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
+#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
+#: templates/js/translated/order.js:3978
 msgid "Reference"
 msgstr ""
 
@@ -701,11 +701,11 @@ msgstr ""
 
 #: build/models.py:214 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1024 order/models.py:1135 order/models.py:1136
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:772
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -718,16 +718,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
 #: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1154 templates/js/translated/build.js:1647
-#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:801
+#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
 #: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:485
+#: templates/js/translated/company.js:597
+#: templates/js/translated/company.js:856 templates/js/translated/order.js:100
 #: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
 #: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3452
+#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
 #: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
@@ -749,7 +749,7 @@ msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
 #: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2071 templates/js/translated/order.js:2818
+#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
 msgid "Source Location"
 msgstr ""
 
@@ -812,7 +812,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2558
+#: templates/js/translated/build.js:2562
 msgid "Completion Date"
 msgstr ""
 
@@ -820,7 +820,7 @@ msgstr ""
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2526
+#: build/models.py:303 templates/js/translated/build.js:2530
 msgid "Issued by"
 msgstr ""
 
@@ -833,7 +833,7 @@ msgstr ""
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2538 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
 msgid "Responsible"
 msgstr ""
 
@@ -887,7 +887,7 @@ msgstr ""
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1187 order/models.py:1405
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
@@ -900,7 +900,7 @@ msgid "Selected stock item not found in BOM"
 msgstr ""
 
 #: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
 #: templates/navbar.html:38
 msgid "Build"
 msgstr ""
@@ -914,11 +914,11 @@ msgstr ""
 #: stock/serializers.py:867 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:739 templates/js/translated/build.js:744
-#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2643
+#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
+#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
 #: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3325
+#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
 #: templates/js/translated/stock.js:2512
 msgid "Stock Item"
@@ -930,9 +930,9 @@ msgstr ""
 
 #: build/models.py:1349 build/serializers.py:183
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
+#: build/templates/build/detail.html:34 common/models.py:1651
 #: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
+#: order/models.py:920 order/models.py:1446 order/serializers.py:1136
 #: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
 #: part/forms.py:74 part/forms.py:89 part/models.py:2601
 #: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
@@ -946,17 +946,17 @@ msgstr ""
 #: stock/serializers.py:291 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:423
-#: templates/js/translated/build.js:575 templates/js/translated/build.js:766
-#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
-#: templates/js/translated/build.js:2086
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:692
+#: templates/js/translated/bom.js:862 templates/js/translated/build.js:427
+#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
+#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
+#: templates/js/translated/build.js:2090
 #: templates/js/translated/model_renderers.js:120
 #: templates/js/translated/order.js:117 templates/js/translated/order.js:886
 #: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
 #: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3242 templates/js/translated/order.js:3331
-#: templates/js/translated/order.js:3474 templates/js/translated/order.js:3982
+#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
+#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
 #: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
@@ -978,7 +978,7 @@ msgid "Destination stock item"
 msgstr ""
 
 #: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1164
+#: templates/js/translated/build.js:1168
 msgid "Build Output"
 msgstr ""
 
@@ -1004,7 +1004,7 @@ msgstr ""
 
 #: build/serializers.py:198 build/serializers.py:639 order/models.py:355
 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
+#: part/serializers.py:935 stock/models.py:478 stock/models.py:1244
 #: stock/serializers.py:300
 msgid "Quantity must be greater than zero"
 msgstr ""
@@ -1048,10 +1048,10 @@ msgstr ""
 #: stock/serializers.py:902 stock/serializers.py:1135
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:751
-#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3250
-#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3339
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
+#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
+#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
+#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
 #: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
@@ -1065,7 +1065,7 @@ msgstr ""
 #: build/serializers.py:363 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:62 order/models.py:665
 #: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
 #: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
 #: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
 #: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
@@ -1289,9 +1289,9 @@ msgstr ""
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
+#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
 #: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3537 templates/js/translated/part.js:1040
+#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
 msgid "Target Date"
 msgstr ""
 
@@ -1304,22 +1304,22 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:392
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr ""
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1128
+#: order/models.py:1222 order/models.py:1353
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
 #: report/templates/report/inventree_build_order_base.html:136
@@ -1345,7 +1345,7 @@ msgstr ""
 msgid "Build Order cannot be completed as incomplete build outputs remain"
 msgstr ""
 
-#: build/templates/build/build_base.html:256
+#: build/templates/build/build_base.html:257
 msgid "Delete Build Order"
 msgstr ""
 
@@ -1361,7 +1361,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
+#: build/templates/build/detail.html:49 order/models.py:1046
 #: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
 msgid "Destination"
 msgstr ""
@@ -1376,19 +1376,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1180
+#: templates/js/translated/build.js:1184
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
 #: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:151
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2518
+#: templates/js/translated/build.js:2522
 msgid "Created"
 msgstr ""
 
@@ -1408,7 +1408,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1899
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1674,893 +1674,901 @@ msgstr ""
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
+#: common/models.py:854
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:855
-msgid "Enable barcode scanner support"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:861
-msgid "Barcode Webcam Support"
+#: common/models.py:861 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:868
-msgid "IPN Regex"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:869
+msgid "Allow barcode scanning via webcam in browser"
+msgstr ""
+
+#: common/models.py:875
+msgid "IPN Regex"
+msgstr ""
+
+#: common/models.py:876
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:873
+#: common/models.py:880
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:874
+#: common/models.py:881
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:887
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:888
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:894
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:895
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:901
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:902
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:908
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:909
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:915
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:916
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:922 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:923
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:439
+#: common/models.py:929 part/models.py:887 templates/js/translated/bom.js:1447
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:930
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:447
+#: common/models.py:936 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:937
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:943 part/models.py:904
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:937
+#: common/models.py:944
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:468
+#: common/models.py:950 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:944
+#: common/models.py:951
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:957 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:951
+#: common/models.py:958
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:964 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:965
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:971
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:972
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:978
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:979
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:990
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:991
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1002
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1003
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1009
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1010
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1016
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1017
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1023
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1024
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1030
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1031
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1037
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1038
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1045
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1046
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1052
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1053
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1062
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1063
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1069 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1063
+#: common/models.py:1070
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1076
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1077
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1087
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1088
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1094
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1095
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1101
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1102
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1107
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1108
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1114
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1115
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1121
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1122
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1124
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1129
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1130
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1136
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1137
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1143
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:1137
+#: common/models.py:1144
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:1142
+#: common/models.py:1149
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:1143
+#: common/models.py:1150
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:1147
+#: common/models.py:1154
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:1148
+#: common/models.py:1155
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:1153
+#: common/models.py:1160
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1161
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
+#: common/models.py:1167
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:1161
+#: common/models.py:1168
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1174
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1175
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1181
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1182
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1188
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1189
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1195
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1196
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1202
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1203
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1209
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1210
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1216
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1217
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1223
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1224
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1230
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1231
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1237
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1238
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1246
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1247
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1254
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1255
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1262
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1263
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1270
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1271
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1278
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1279
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1296 common/models.py:1612
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1318
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1319
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1325
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1326
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1332
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1333
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1339
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1340
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1346
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1347
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1353
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1354
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1360
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1361
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1367
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1368
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1374
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1375
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1381
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1382
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1388
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1389
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1395
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1396
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1402
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1403
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1409
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1410
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1416
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1417
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1423
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1424
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1430
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1431
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1437
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1438
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1444
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1445
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1451
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1452
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1458
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1459
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1465
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1466
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1472
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1473
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1479
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1480
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1486
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1487
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1493
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1494
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1500
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1501
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1507
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1508
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1514
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1515
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1521
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1522
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1528
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1529
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1535
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1536
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1542
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1543
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1549
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1550
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1556
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1557
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1563
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1564
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1570
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1571
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1577
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1578
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1592 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1593
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1652 company/forms.py:37
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
+#: common/models.py:1659 company/serializers.py:319
+#: company/templates/company/supplier_part.html:284 order/models.py:961
 #: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1660
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1820 common/models.py:1998
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1821
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1830
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1835 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:308
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1836
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1851
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1858
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1859
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1965
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1966
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1974
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1975
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1982
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:1983
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:1989
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:1990
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:1999
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2004
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2005
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2631,7 +2639,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:402
 msgid "Website"
 msgstr ""
 
@@ -2732,11 +2740,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:411
+#: templates/js/translated/company.js:386
+#: templates/js/translated/company.js:487
+#: templates/js/translated/company.js:622
+#: templates/js/translated/company.js:907 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2747,9 +2755,9 @@ msgstr ""
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
 #: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
+#: templates/js/translated/company.js:486
+#: templates/js/translated/company.js:638
+#: templates/js/translated/company.js:925 templates/js/translated/order.js:1907
 #: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
 msgid "MPN"
 msgstr ""
@@ -2779,8 +2787,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2089 templates/js/translated/company.js:535
+#: templates/js/translated/company.js:753 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2792,7 +2800,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2810,10 +2818,10 @@ msgstr ""
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
 #: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
+#: templates/js/translated/company.js:390
+#: templates/js/translated/company.js:881 templates/js/translated/order.js:1643
 #: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2861,7 +2869,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:957 templates/js/translated/stock.js:1975
 msgid "Packaging"
 msgstr ""
 
@@ -2880,10 +2888,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1791
+#: templates/js/translated/build.js:2654 templates/js/translated/company.js:962
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2913,7 +2921,7 @@ msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:375
 msgid "Company"
 msgstr ""
 
@@ -2931,7 +2939,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:318
 msgid "Edit Company"
 msgstr ""
 
@@ -2959,9 +2967,9 @@ msgstr ""
 #: stock/models.py:637 stock/serializers.py:796
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
+#: templates/js/translated/company.js:382 templates/js/translated/order.js:2458
 #: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -3075,7 +3083,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1658
+#: templates/js/translated/build.js:1662
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3096,12 +3104,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:670
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:671
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3129,7 +3137,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3176,7 +3184,7 @@ msgstr ""
 #: company/templates/company/supplier_part.html:7
 #: company/templates/company/supplier_part.html:24 stock/models.py:601
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
+#: templates/js/translated/company.js:897 templates/js/translated/order.js:884
 #: templates/js/translated/stock.js:1932
 msgid "Supplier Part"
 msgstr ""
@@ -3427,7 +3435,7 @@ msgstr ""
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:136 order/models.py:1269
 msgid "Link to external page"
 msgstr ""
 
@@ -3512,7 +3520,7 @@ msgstr ""
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
+#: order/models.py:675 order/models.py:1227
 #: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
 msgid "Shipment Date"
 msgstr ""
@@ -3561,25 +3569,25 @@ msgstr ""
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:962
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:992
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:1000
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
+#: order/models.py:1006 order/models.py:1086 order/models.py:1127
+#: order/models.py:1221 order/models.py:1353
 #: templates/js/translated/order.js:3123
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:1007 order/models.py:1086
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
@@ -3591,154 +3599,154 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1025
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
+#: order/models.py:1032 order/templates/order/order_base.html:169
 #: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
 #: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:330
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1033
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
+#: order/models.py:1040 part/templates/part/prices.html:181 stock/models.py:727
 #: stock/serializers.py:169 stock/templates/stock/item_base.html:191
 #: templates/js/translated/stock.js:1963
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1041
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1049
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1115
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1120
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1146 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1147
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1152
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1228
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1235
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1236
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
+#: order/models.py:1244
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1247
+#: order/models.py:1248
 msgid "Shipment notes"
 msgstr ""
 
-#: order/models.py:1253
+#: order/models.py:1254
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1254
+#: order/models.py:1255
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1261
+#: order/models.py:1262
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1262
+#: order/models.py:1263
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1280
+#: order/models.py:1281
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1283
+#: order/models.py:1284
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1386 order/models.py:1388
+#: order/models.py:1387 order/models.py:1389
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1392
+#: order/models.py:1393
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1394
+#: order/models.py:1395
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1397
+#: order/models.py:1398
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1401
+#: order/models.py:1402
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: order/models.py:1407 order/serializers.py:1047
+#: order/models.py:1408 order/serializers.py:1047
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1410
+#: order/models.py:1411
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1411
+#: order/models.py:1412
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1419
+#: order/models.py:1420
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
+#: order/models.py:1428 order/serializers.py:1151 order/serializers.py:1275
 #: templates/js/translated/model_renderers.js:313
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1429
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1442 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1443
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1446
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -3997,8 +4005,8 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:428
-#: templates/js/translated/build.js:580 templates/js/translated/build.js:1972
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
+#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
 #: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
 #: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
@@ -4120,8 +4128,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1880
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1109
+#: templates/js/translated/build.js:1884
 msgid "Actions"
 msgstr ""
 
@@ -4151,47 +4159,47 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:488
+#: part/api.py:489
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:509
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:526
+#: part/api.py:527
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:558
+#: part/api.py:559
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:644
+#: part/api.py:645
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:645
+#: part/api.py:646
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:651
+#: part/api.py:652
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1074
+#: part/api.py:1075
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:1078
+#: part/api.py:1079
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:1093
+#: part/api.py:1094
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:1124 part/api.py:1128 part/api.py:1143 part/api.py:1147
+#: part/api.py:1125 part/api.py:1129 part/api.py:1144 part/api.py:1148
 msgid "This field is required"
 msgstr ""
 
@@ -4205,14 +4213,15 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3563
+#: templates/js/translated/order.js:3565
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:946 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
@@ -4457,7 +4466,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4572,8 +4581,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:873 templates/js/translated/bom.js:998
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4606,9 +4615,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:68
-#: templates/js/translated/table_filters.js:88
+#: templates/js/translated/bom.js:1015
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4617,7 +4626,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1007
 msgid "Allow Variants"
 msgstr ""
 
@@ -4673,75 +4682,75 @@ msgstr ""
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:773
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:781
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:782
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:787
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:788
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:793
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:794
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:799
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:800
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:840
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:841
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:871
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:914
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:917
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:920
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:929
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:937
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:958
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -5185,8 +5194,8 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:613
+#: templates/js/translated/company.js:872
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
@@ -5203,7 +5212,7 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5217,7 +5226,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1036
 msgid "Can Build"
 msgstr ""
 
@@ -5275,7 +5284,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:990
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5358,7 +5367,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:984
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5785,11 +5794,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:421 templates/js/translated/build.js:573
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:1671
+#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3240
-#: templates/js/translated/order.js:3329 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
+#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -6229,7 +6238,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6249,7 +6258,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6407,7 +6416,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1693
+#: templates/js/translated/build.js:1697
 msgid "No location set"
 msgstr ""
 
@@ -6421,7 +6430,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:261
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6431,12 +6440,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:267
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:968 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6679,7 +6688,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6710,7 +6719,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7371,7 +7380,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr ""
 
@@ -7545,7 +7554,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7592,7 +7601,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1482
 msgid "Required Quantity"
 msgstr ""
 
@@ -7697,23 +7706,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7917,89 +7926,93 @@ msgstr ""
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:685
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:701
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:820
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:830
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:834 templates/js/translated/build.js:1773
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
-#: templates/js/translated/order.js:3577
+#: templates/js/translated/bom.js:928 templates/js/translated/build.js:1818
+#: templates/js/translated/order.js:3579
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:933 templates/js/translated/build.js:1822
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/bom.js:935 templates/js/translated/build.js:1824
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:937 templates/js/translated/build.js:1826
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:955
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:970
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:977
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1026 templates/js/translated/bom.js:1146
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1053
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1117
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1119
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1121
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1123 templates/js/translated/bom.js:1285
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1125
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1221 templates/js/translated/build.js:1619
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1465 templates/js/translated/build.js:1757
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1487
 msgid "Inherited from parent BOM"
 msgstr ""
 
@@ -8035,248 +8048,248 @@ msgstr ""
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:219
+#: templates/js/translated/build.js:223
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:260 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:262 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:271
+#: templates/js/translated/build.js:275
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:272
+#: templates/js/translated/build.js:276
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:284
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:285
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:288
+#: templates/js/translated/build.js:292
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:319
+#: templates/js/translated/build.js:323
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:330
+#: templates/js/translated/build.js:334
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:339
+#: templates/js/translated/build.js:343
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:347
+#: templates/js/translated/build.js:351
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:370
+#: templates/js/translated/build.js:374
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:388
+#: templates/js/translated/build.js:392
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:408 templates/js/translated/build.js:560
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:409 templates/js/translated/build.js:561
+#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:463 templates/js/translated/build.js:615
+#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:481
+#: templates/js/translated/build.js:485
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:632
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:717
+#: templates/js/translated/build.js:721
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:755
+#: templates/js/translated/build.js:759
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1134
+#: templates/js/translated/build.js:1138
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1203
+#: templates/js/translated/build.js:1207
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1210
+#: templates/js/translated/build.js:1214
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1232
+#: templates/js/translated/build.js:1236
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1237
+#: templates/js/translated/build.js:1241
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1710 templates/js/translated/build.js:2661
-#: templates/js/translated/order.js:3277
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
+#: templates/js/translated/order.js:3279
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2662
-#: templates/js/translated/order.js:3278
+#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
+#: templates/js/translated/order.js:3280
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1730
+#: templates/js/translated/build.js:1734
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1740
+#: templates/js/translated/build.js:1744
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1765
+#: templates/js/translated/build.js:1769
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1782
+#: templates/js/translated/build.js:1786
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1808 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3582
+#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1839 templates/js/translated/build.js:2084
-#: templates/js/translated/build.js:2657 templates/js/translated/order.js:3596
+#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
+#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1887 templates/js/translated/order.js:3676
+#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/stock_table.html:50
+#: templates/js/translated/build.js:1895 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1894 templates/js/translated/order.js:3669
+#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1933 templates/js/translated/label.js:172
+#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
 #: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1934 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1983 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2057
+#: templates/js/translated/build.js:2061
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2058
+#: templates/js/translated/build.js:2062
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2072 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2100
+#: templates/js/translated/build.js:2104
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2111 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2183 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2280
+#: templates/js/translated/build.js:2284
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2281
+#: templates/js/translated/build.js:2285
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2283
+#: templates/js/translated/build.js:2287
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2288
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2289
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2306
+#: templates/js/translated/build.js:2310
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2413
+#: templates/js/translated/build.js:2417
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
 #: templates/js/translated/stock.js:2340
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2468
+#: templates/js/translated/build.js:2472
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2496
+#: templates/js/translated/build.js:2500
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2638
+#: templates/js/translated/build.js:2642
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8304,87 +8317,87 @@ msgstr ""
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:267
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:339
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:416
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:425
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:440
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:481
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:496
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:530
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:544
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:585
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:605
+#: templates/js/translated/company.js:864 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:609
+#: templates/js/translated/company.js:868 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:737 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:774 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:775 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:844
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:985
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:986
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8422,61 +8435,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8844,15 +8857,15 @@ msgstr ""
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3728
+#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3750
+#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3761
+#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
 msgid "Delete Line Item"
 msgstr ""
 
@@ -8860,22 +8873,22 @@ msgstr ""
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3462
+#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
 msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3487 templates/js/translated/order.js:3995
+#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3503 templates/js/translated/order.js:4011
+#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3545
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
 #: templates/js/translated/part.js:1048
 msgid "This line item is overdue"
 msgstr ""
@@ -8884,39 +8897,39 @@ msgstr ""
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3682
+#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3683
+#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3687
+#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4060
+#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4061
+#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4092
+#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4113
+#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4124
+#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
 msgid "Delete Line"
 msgstr ""
 
@@ -9000,48 +9013,48 @@ msgstr ""
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3254 templates/js/translated/order.js:3343
+#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3262 templates/js/translated/order.js:3352
+#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3666
+#: templates/js/translated/order.js:3668
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3672
+#: templates/js/translated/order.js:3674
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3679 templates/js/translated/order.js:3877
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3691
+#: templates/js/translated/order.js:3693
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3694
+#: templates/js/translated/order.js:3696
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3776
+#: templates/js/translated/order.js:3778
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3885
+#: templates/js/translated/order.js:3887
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3899
+#: templates/js/translated/order.js:3901
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4135
+#: templates/js/translated/order.js:4137
 msgid "No matching lines"
 msgstr ""
 
@@ -9218,7 +9231,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9722,7 +9735,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9831,222 +9844,226 @@ msgid "Assembled Part"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:64
-msgid "Validated"
+msgid "Has Available Stock"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:72
+msgid "Validated"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:110
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:111
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:121
-#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:429
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:472
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:136
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:226
 msgid "Is Serialized"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:139
-#: templates/js/translated/table_filters.js:225
+#: templates/js/translated/table_filters.js:147
+#: templates/js/translated/table_filters.js:233
 msgid "Serial number GTE"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/table_filters.js:234
 msgid "Serial number greater than or equal to"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
 msgid "Serial number LTE"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
+#: templates/js/translated/table_filters.js:152
+#: templates/js/translated/table_filters.js:238
 msgid "Serial number less than or equal to"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:147
-#: templates/js/translated/table_filters.js:148
-#: templates/js/translated/table_filters.js:221
-#: templates/js/translated/table_filters.js:222
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:243
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:401
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:179
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:184
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:209
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:214
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:234
-#: templates/js/translated/table_filters.js:235
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:252
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:253
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:262
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:280
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:303
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:333
-#: templates/js/translated/table_filters.js:344
-#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:349
-#: templates/js/translated/table_filters.js:366
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:435
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:443
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:451
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:452
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
index e8350ba108..f57ed9fabd 100644
--- a/InvenTree/locale/es/LC_MESSAGES/django.po
+++ b/InvenTree/locale/es/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:41\n"
 "Last-Translator: \n"
 "Language-Team: Spanish, Mexico\n"
 "Language: es_MX\n"
@@ -25,196 +25,253 @@ msgstr "endpoint API no encontrado"
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "Ingrese la fecha"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr "Notas"
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "Introduzca contraseña"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "Ingrese su nueva contraseña"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Confirmar la contraseña"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Confirmar contraseña nueva"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr ""
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "Email (de nuevo)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "Confirmación de dirección de email"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "Debe escribir el mismo correo electrónico cada vez."
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr "La URL proporcionada no es un archivo de imagen válido"
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr ""
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "Cantidad proporcionada no válida"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "No se ha proporcionado un número de serie"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "Grupo no válido: un {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "No válido/sin grupo {group}"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "Numeros de serie no encontrados"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "Archivo no encontrado"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "Falta enlace externo"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "Archivo adjunto"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "Seleccionar archivo para adjuntar"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "Enlace"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "Enlace a URL externa"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "Comentario"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "Comentario del archivo"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "Usuario"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "fecha de subida"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "El nombre del archivo no debe estar vacío"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "Directorio de archivos adjuntos no válido"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "El nombre del archivo contiene el carácter ilegal '{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "Falta el nombre de extensión del archivo"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "Ya existe un archivo adjunto con este nombre"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "Error al cambiar el nombre del archivo"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "Selección no válida"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr "Selección no válida"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "Nombre"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "Descripción"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "Descripción (opcional)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "padre"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr "Error de Servidor"
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr ""
 
@@ -273,56 +330,69 @@ msgstr ""
 msgid "Must be a valid number"
 msgstr "Debe ser un numero valido"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "Nombre de Archivo"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr "Valor inválido"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr ""
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr ""
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr "Tipo de archivo no soportado"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "El archivo es demasiado grande"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr "No hay columnas en el archivo"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr "No hay filas de datos en el archivo"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr "No se proporcionaron filas de datos"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr "No hay columnas de datos proporcionadas"
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr "Falta la columna requerida: '{name}'"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "Columna duplicada: '{col}'"
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr "Checo"
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr "Las comprobaciones de estado del sistema InvenTree fallaron"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "Pendiente"
 
@@ -461,8 +531,8 @@ msgstr "Perdida"
 msgid "Returned"
 msgstr "Devuelto"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "Enviado"
 
@@ -546,7 +616,7 @@ msgstr "Separar del elemento principal"
 msgid "Split child item"
 msgstr "Dividir elemento secundario"
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr "Artículos de stock combinados"
 
@@ -554,7 +624,7 @@ msgstr "Artículos de stock combinados"
 msgid "Converted to variant"
 msgstr "Convertir a variante"
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr "Enviar al cliente"
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr "El IPN debe coincidir con la expresión regular {pat}"
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr "La referencia debe coincidir con la expresión regular {pattern}"
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr "Carácter ilegal en el nombre ({x})"
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr "El valor excedente no debe ser negativo"
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr "El excedente no debe superar el 100%"
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr "Valor no válido para sobrecarga"
 
@@ -646,20 +710,20 @@ msgstr "Acerca de InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr "Opción no válida para la construcción padre"
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr "Construir órden"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr "Construir órden"
 msgid "Build Orders"
 msgstr "Construir órdenes"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr "Número de orden de construcción o armado"
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr "Referencia"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr "Breve descripción de la construcción o armado"
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Construcción o Armado Superior"
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr "Orden de Construcción o Armado a la que se asigna"
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "Parte"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr "Seleccionar parte a construir o armar"
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr "Referencia de orden de venta"
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr "Orden de Venta a la que se asigna"
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr "Ubicación de la fuente"
 
-#: build/models.py:240
+#: build/models.py:217
 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:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr "Ubicación de destino"
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr "Seleccione la ubicación donde se almacenarán los elementos completados"
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr "Cantidad a crear"
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr "Número de objetos existentes a construir"
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr "Elementos completados"
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr "Número de productos en stock que se han completado"
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr "Estado de la construcción"
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr "Código de estado de construcción"
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr "Numero de lote"
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr "Número de lote de este producto final"
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr "Fecha de Creación"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr "Fecha límite de finalización"
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Fecha límite para la finalización de la construcción. La construcción estará vencida después de esta fecha."
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr "Fecha de finalización"
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr "terminado por"
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr "Emitido por"
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr "El usuario que emitió esta orden"
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr "Responsable"
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr "Usuario responsable de esta orden"
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr "Usuario responsable de esta orden"
 msgid "External Link"
 msgstr "Link externo"
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr "Notas adicionales de construcción"
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr "No se ha especificado salida de construcción"
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr "La construcción de la salida ya está completa"
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr "La salida de la construcción no coincide con el orden de construcción"
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Item de construcción o armado debe especificar un resultado o salida, ya que la parte maestra está marcada como rastreable"
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr "Artículo de stock sobreasignado"
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr "Cantidad asignada debe ser mayor que cero"
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr "La cantidad debe ser 1 para el stock serializado"
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr "Artículo de stock seleccionado no encontrado en BOM"
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr "Construcción o Armado"
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr "Armar para asignar partes"
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr "Artículo de stock"
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr "Producto original de stock"
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "Cantidad"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr "Cantidad de stock a asignar para construir"
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr "Instalar en"
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr "Artículo de stock de destino"
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr "Resultado de la construcción o armado"
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr "La salida de construcción no coincide con la construcción padre"
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr "La parte de salida no coincide con la parte de la Orden de Construcción"
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr "Esta salida de construcción ya ha sido completada"
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr "Esta salida de construcción no está completamente asignada"
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr "Ingrese la cantidad para la producción de la construcción"
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr "La cantidad debe ser mayor que cero"
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr "Cantidad entera requerida para partes rastreables"
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr "Números de serie"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr "Introduzca los números de serie de salidas de construcción"
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr "Autoasignar Números de Serie"
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Asignar automáticamente los elementos requeridos con números de serie coincidentes"
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr "Los siguientes números de serie ya existen"
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr "Debe proporcionarse una lista de salidas de construcción"
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr "Unicación"
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr "Ubicación para las salidas de construcción completadas"
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr "Estado"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr "Aceptar no asignado"
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr "Aceptar que los artículos de stock no se han asignado completamente a este pedido de construcción"
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr "El stock requerido no ha sido completamente asignado"
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr "Aceptar incompleto"
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr "Aceptar que el número requerido de salidas de construcción no se han completado"
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr "La cantidad de construcción requerida aún no se ha completado"
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr "El orden de construcción tiene salidas incompletas"
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr "No se han creado salidas para esta orden de construcción"
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr "Item de Lista de Materiales"
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr "Resultado de la construcción o armado"
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr "La salida de la construcción debe apuntar a la misma construcción"
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr "bom_item.part debe apuntar a la misma parte que la orden de construcción"
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr "El artículo debe estar en stock"
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Cantidad disponible ({q}) excedida"
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr "La salida de la construcción debe especificarse para la asignación de partes rastreadas"
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr "La salida de construcción no se puede especificar para la asignación de partes no rastreadas"
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr "Debe proporcionarse la adjudicación de artículos"
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr "Excluir ubicación"
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr "Excluir artículos de stock de esta ubicación seleccionada"
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr "Stock intercambiable"
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "Stock no ha sido asignado completamente a este pedido de construcción"
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr "Fecha objetivo"
 
@@ -1303,35 +1367,35 @@ msgstr "Esta construcción vence el %(target)s"
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr "Vencido"
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr "Completados"
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr "Orden de Venta"
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr "Emitido por"
 
@@ -1360,8 +1424,8 @@ msgstr "Fuente de stock"
 msgid "Stock can be taken from any available location."
 msgstr "Las existencias se pueden tomar desde cualquier ubicación disponible."
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr "Destinación"
 
@@ -1375,19 +1439,19 @@ msgstr "Partes asignadas"
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr "Lote"
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr "Creado"
 
@@ -1407,7 +1471,7 @@ msgstr "Órdenes de Trabajo herederas"
 msgid "Allocate Stock to Build"
 msgstr "Asignar Stock a Trabajo"
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr "Desasignar stock"
 
@@ -1438,7 +1502,7 @@ msgstr "Pedir partes necesarias"
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr "Partes del pedido"
 
@@ -1581,985 +1645,997 @@ msgstr "Archivo {name.title()}"
 msgid "Select {name} file to upload"
 msgstr "Seleccione el archivo {name} para subir"
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Clave de configuración (debe ser única - mayúsculas y minúsculas)"
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr "Valor de ajuste"
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr "El valor elegido no es una opción válida"
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr "El valor debe ser un valor booleano"
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr "El valor debe ser un entero"
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr "Cadena de clave debe ser única"
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr "Sin grupo"
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr "Reinicio requerido"
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr "Se ha cambiado una configuración que requiere un reinicio del servidor"
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr "Descriptor de cadena para la instancia del servidor"
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr "Usar nombre de instancia"
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr "Utilice el nombre de la instancia en la barra de título"
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr "Nombre de empresa"
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr "Nombre interno de empresa"
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr "URL Base"
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr "URL base para la instancia del servidor"
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr "Moneda predeterminada"
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr "Moneda predeterminada"
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr "Descargar desde URL"
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr "Permitir la descarga de imágenes y archivos remotos desde la URL externa"
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr "Soporte de código de barras"
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr "Habilitar soporte para escáner de código de barras"
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
+msgid "Maximum allowable download size for remote image"
+msgstr ""
+
+#: common/models.py:873
+msgid "Require confirm"
+msgstr ""
+
+#: common/models.py:874
+msgid "Require explicit user confirmation for certain action."
+msgstr ""
+
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
+msgstr "Soporte de código de barras"
+
+#: common/models.py:881
+msgid "Enable barcode scanner support"
+msgstr "Habilitar soporte para escáner de código de barras"
+
+#: common/models.py:887
+msgid "Barcode Webcam Support"
+msgstr ""
+
+#: common/models.py:888
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:868
+#: common/models.py:894
 msgid "IPN Regex"
 msgstr "Regex IPN"
 
-#: common/models.py:869
+#: common/models.py:895
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Patrón de expresión regular para IPN de la parte coincidente"
 
-#: common/models.py:873
+#: common/models.py:899
 msgid "Allow Duplicate IPN"
 msgstr "Permitir IPN duplicado"
 
-#: common/models.py:874
+#: common/models.py:900
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Permitir que varias partes compartan el mismo IPN"
 
-#: common/models.py:880
+#: common/models.py:906
 msgid "Allow Editing IPN"
 msgstr "Permitir editar IPN"
 
-#: common/models.py:881
+#: common/models.py:907
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Permite cambiar el valor de IPN mientras se edita una pieza"
 
-#: common/models.py:887
+#: common/models.py:913
 msgid "Copy Part BOM Data"
 msgstr "Copiar parte de datos BOM"
 
-#: common/models.py:888
+#: common/models.py:914
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Copiar datos BOM por defecto al duplicar una parte"
 
-#: common/models.py:894
+#: common/models.py:920
 msgid "Copy Part Parameter Data"
 msgstr "Copiar Parámetros de Pieza"
 
-#: common/models.py:895
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr "Copiar datos de parámetro por defecto al duplicar una parte"
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr "Copiar parte de datos de prueba"
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr "Copiar datos de parámetro por defecto al duplicar una parte"
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr "Copiar plantillas de parámetros de categoría"
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr "Copiar plantillas de parámetros de categoría al crear una parte"
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr "Plantilla"
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr "Las piezas son plantillas por defecto"
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr "Montaje"
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr "Las piezas pueden ser ensambladas desde otros componentes por defecto"
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr "Componente"
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr "Las piezas pueden ser usadas como subcomponentes por defecto"
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr "Comprable"
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr "Las piezas son comprables por defecto"
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr "Vendible"
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr "Las piezas se pueden vender por defecto"
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr "Rastreable"
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr "Las piezas son rastreables por defecto"
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr "Virtual"
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr "Las piezas son virtuales por defecto"
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr "Mostrar importación en vistas"
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr "Mostrar el asistente de importación en algunas vistas de partes"
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr "Mostrar precio en formularios"
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr "Mostrar precio de la pieza en algunos formularios"
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr "Mostrar precio en BOM"
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr "Incluye información de precios en tablas BOM"
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr "Mostrar Historial de Precios"
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr "Mostrar el precio histórico de la parte"
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr "Mostrar piezas relacionadas"
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr "Mostrar partes relacionadas para una pieza"
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr "Crear stock inicial"
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr "Crear stock inicial en la creación de partes"
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr "Precios internos"
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr "Habilitar precios internos para piezas"
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr "Precio interno como precio de BOM"
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr "Usar el precio interno (si está establecido) en los cálculos de precios BOM"
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr "Formato de visualización de Nombre de Parte"
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr "Formato para mostrar el nombre de la pieza"
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr "Habilitar informes"
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr "Habilitar generación de informes"
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Modo de depuración"
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Generar informes en modo de depuración (salida HTML)"
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr "Tamaño de página"
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr "Tamaño de página predeterminado para informes PDF"
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr "Habilitar generación de informes de prueba"
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr "Expiración de stock"
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr "Habilitar la funcionalidad de expiración de stock"
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr "Vender existencias caducadas"
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr "Permitir venta de existencias caducadas"
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr "Tiempo histórico de Stock"
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr "Número de días de artículos de stock se consideran obsoletos antes de caducar"
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr "días"
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr "Crear Stock Caducado"
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr "Permitir crear con stock caducado"
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr "Control de Stock"
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr "Habilitar control de propiedad sobre ubicaciones de stock y artículos"
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
-msgstr "Prefijo de Referencia de Orden de Trabajo"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
+msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
-msgstr "Valor de prefijo para referencia de la orden de trabajo"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
+msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
-msgstr "Regex de Referencia de Orden de Trabajo"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
+msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
-msgstr "Patrón de expresión regular para referencia de orden de trabajo coincidente"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
+msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr "Prefijo de referencia de pedido de venta"
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr "Valor del prefijo para referencia del pedido de venta"
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
-msgstr "Prefijo de orden de compra"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
+msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
-msgstr "Valor del prefijo para referencia de la orden de compra"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
+msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr "Habilitar función de contraseña olvidada"
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr "Activar la función olvido de contraseña en las páginas de inicio de sesión"
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr "Habilitar registro"
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr "Activar auto-registro para usuarios en las páginas de inicio de sesión"
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr "Habilitar SSO"
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr "Habilitar SSO en las páginas de inicio de sesión"
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr "Email requerido"
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr "Requiere usuario para suministrar correo al registrarse"
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr "Auto-rellenar usuarios SSO"
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Rellenar automáticamente los datos de usuario de la cuenta SSO"
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr "Correo dos veces"
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr "Al registrarse pregunte dos veces a los usuarios por su correo"
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr "Contraseña dos veces"
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr "Al registrarse, preguntar dos veces a los usuarios por su contraseña"
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr "Grupo al registrarse"
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr "Grupo al que se asignan nuevos usuarios al registrarse"
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr "Forzar MFA"
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr "Los usuarios deben utilizar seguridad multifactor."
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr "Habilitar integración de URL"
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr "Habilitar plugins para añadir rutas de URL"
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr "Habilitar integración de navegación"
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr "Habilitar plugins para integrar en la navegación"
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr "Habilitar integración de la aplicación"
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr "Habilitar plugins para añadir aplicaciones"
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr "Habilitar integración de programación"
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Habilitar plugins para ejecutar tareas programadas"
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr "Habilitar integración de eventos"
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr "Habilitar plugins para responder a eventos internos"
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Tecla de ajustes (debe ser única - mayúsculas y minúsculas"
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr "Mostrar partes suscritas"
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr "Mostrar las partes suscritas en la página principal"
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr "Mostrar categorías suscritas"
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr "Mostrar categorías de partes suscritas en la página de inicio"
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr "Mostrar últimas partes"
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr "Mostrar las últimas partes en la página de inicio"
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr "Conteo de Partes Recientes"
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr "Número de partes recientes a mostrar en la página de índice"
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr "Mostrar BOMs no validadas"
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Mostrar BOMs que esperan validación en la página de inicio"
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr "Mostrar cambios recientes de stock"
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr "Mostrar artículos de stock recientemente modificados en la página de inicio"
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr "Conteo Reciente de Stock"
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr "Número de elementos de stock recientes a mostrar en la página de índice"
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr "Mostrar stock bajo"
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr "Mostrar artículos de stock bajo en la página de inicio"
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr "Mostrar stock agotado"
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr "Mostrar artículos agotados en la página de inicio"
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr "Mostrar stock necesario"
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Mostrar elementos de stock necesarios para trabajos en la página de inicio"
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr "Mostrar stock caducado"
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr "Mostrar artículos de stock caducados en la página de inicio"
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr "Mostrar stock obsoleto"
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr "Mostrar elementos de stock obsoletos en la página de inicio"
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr "Mostrar trabajos pendientes"
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr "Mostrar trabajos pendientes en la página de inicio"
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr "Mostrar trabajos vencidos"
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr "Mostrar trabajos pendientes en la página de inicio"
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr "Mostrar Órdenes de Compra Pendientes"
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr "Mostrar las OC destacadas en la página de inicio"
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr "Mostrar OC atrasadas"
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr "Mostrar las OC vencidas en la página de inicio"
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr "Mostrar OV pendiemtes"
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr "Mostrar OV pendientes en la página de inicio"
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr "Mostrar OV atrasadas"
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr "Mostrar OV atrasadas en la página de inicio"
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr "Mostrar etiqueta interior"
 
-#: common/models.py:1438
+#: common/models.py:1462
 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:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr "Mostrar informe en línea"
 
-#: common/models.py:1445
+#: common/models.py:1469
 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:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr "Ocultar Partes Inactivas"
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr "Resultados de la vista previa"
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr "Mostrar cantidad en formularios"
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr "Mostrar la cantidad de piezas disponibles en algunos formularios"
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr "Formularios de cierre de teclas de escape"
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr "Usa la clave de escape para cerrar formularios modales"
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr "Barra de navegación fija"
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr "Cantidad de salto de precio"
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr "Precio"
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr "Precio unitario a la cantidad especificada"
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr "Punto final en el que se recibe este webhook"
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr "Nombre para este webhook"
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr "Activo"
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr "Está activo este webhook"
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr "Token para el acceso"
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr "Clave"
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr "Secreto compartido para HMAC"
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr "ID de mensaje"
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr "Identificador único para este mensaje"
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr "Servidor desde el cual se recibió este mensaje"
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr "Encabezado"
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr "Encabezado del mensaje"
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr "Cuerpo"
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr "Cuerpo de este mensaje"
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr "Endpoint en el que se recibió este mensaje"
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr "Trabajado en"
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr "¿El trabajo en este mensaje ha terminado?"
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr "Subir Archivo"
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr "Coincidir Campos"
 
@@ -2611,15 +2687,6 @@ msgstr "Partes importadas"
 msgid "Previous Step"
 msgstr "Paso anterior"
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr "URL de la imágen"
-
 #: company/models.py:98
 msgid "Company description"
 msgstr "Descripción de la compañía"
@@ -2630,7 +2697,7 @@ msgstr "Descripción de la empresa"
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr "Página web"
 
@@ -2707,9 +2774,9 @@ msgstr "es fabricante"
 msgid "Does this company manufacture parts?"
 msgstr "¿Esta empresa fabrica piezas?"
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr "Moneda"
 
@@ -2717,9 +2784,9 @@ msgstr "Moneda"
 msgid "Default currency used for this company"
 msgstr "Moneda predeterminada utilizada para esta empresa"
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr "Parte base"
 
@@ -2731,11 +2798,11 @@ msgstr "Seleccionar pieza"
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr "Fabricante"
 
@@ -2745,11 +2812,11 @@ msgstr "Seleccionar fabricante"
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr "Nombre del parámetro"
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr "Valor"
@@ -2791,7 +2858,7 @@ msgstr "Valor del parámetro"
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr "Unidades"
 
@@ -2804,15 +2871,15 @@ 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:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr "Proveedor"
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr "Seleccionar proveedor"
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr "Descripción de la parte del proveedor"
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr "Nota"
 
@@ -2860,7 +2927,7 @@ msgstr "Cargo mínimo (p. ej., cuota de almacenamiento)"
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr "Paquetes"
 
@@ -2879,10 +2946,10 @@ msgstr "Pedido múltiple"
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr "Disponible"
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr "Moneda predeterminada utilizada para este proveedor"
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr "Código de moneda"
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr "Empresa"
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr "Crear orden de compra"
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr "Editar datos de la empresa"
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr "Modificar Empresa"
 
@@ -2953,14 +3020,14 @@ msgstr "Cargar nueva imagen"
 msgid "Download image from URL"
 msgstr "Descargar desde URL"
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr "Cliente"
 
@@ -2977,6 +3044,11 @@ msgstr "Teléfono"
 msgid "Upload Image"
 msgstr "Cargar Imagen"
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr "Descargar imagen"
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr "Nueva orden de venta"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr "Stock asignado"
 
@@ -3082,7 +3154,7 @@ msgstr "Stock asignado"
 msgid "Supplier List"
 msgstr "Listado de proveedores"
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr "Pedir ítem"
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr "Editar fabricante de la pieza"
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr "Eliminar fabricante de la pieza"
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr "Eliminar partes del proveedor"
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr "Eliminar"
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr "Elementos de Stock Asignados"
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr "Ítems de Proveedor"
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr "Editar Parte del Proveedor"
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr "Precios"
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr "Elementos de stock"
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr "Nuevo Proveedor"
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr "Nuevo Fabricante"
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr "Clientes"
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr "Nuevo Cliente"
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr "Empresas"
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr "Nueva Compañía"
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr "Descargar imagen"
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr "El tamaño de la imagen excede el tamaño máximo permitido para descargar"
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr "Respuesta no válida: {code}"
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr "La URL proporcionada no es un archivo de imagen válido"
-
 #: label/models.py:102
 msgid "Label name"
 msgstr "Nombre etiqueta"
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr "Crear filtros de consulta (lista separada por comas de pares clave=valor),"
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr "Filtros"
 
@@ -3422,438 +3477,438 @@ msgstr "Crear filtros de consulta (lista separada por comas de pares clave=valor
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr "Filtros de búsqueda de partes (valor separado por comas de pares clave=valor)"
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr "Descripción del pedido"
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr "Enlace a Url externa"
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr "Creado por"
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr "Usuario o grupo responsable de este pedido"
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr "Notas del pedido"
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr "Referencia del pedido"
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr "Estado de la orden de compra"
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr "Compañía de la que se están encargando los artículos"
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr "Referencia del proveedor"
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr "Código de referencia de pedido del proveedor"
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr "recibido por"
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr "Fecha de emisión"
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr "Fecha de expedición del pedido"
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr "Fecha de entrega objetivo"
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr "Fecha esperada para la entrega del pedido. El pedido se retrasará después de esta fecha."
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr "La fecha de pedido fue completada"
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr "El proveedor de la pieza debe coincidir con el proveedor de PO"
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr "La cantidad debe ser un número positivo"
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr "Empresa a la que se venden los artículos"
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr "Referencia del cliente "
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr "Código de referencia de pedido del cliente"
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr "Fecha límite para la finalización del pedido. El pedido se retrasará después de esta fecha."
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr "Fecha de envío"
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr "enviado por"
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr "El pedido no se puede completar porque no se han asignado partes"
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr "Sólo una orden pendiente puede ser marcada como completa"
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr "El pedido no se puede completar porque hay envíos incompletos"
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr "El pedido no se puede completar porque hay artículos de línea incompletos"
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr "Cantidad del artículo"
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr "Referencia de línea en la orden"
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr "Notas del artículo de línea"
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr "La pieza del proveedor debe coincidir con el proveedor"
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr "Orden"
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr "Orden de compra"
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr "Ítems de Proveedor"
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr "Recibido"
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr "Número de artículos recibidos"
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr "Precio de Compra"
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr "Precio de compra unitario"
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr "¿Dónde quiere el comprador almacenar este objeto?"
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr "Precio de Venta"
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr "Precio de venta unitario"
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr "Cantidad enviada"
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr "Fecha del envío"
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr "Revisado por"
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr "Usuario que revisó este envío"
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr "Número de envío"
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr "Nota de envío"
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr "Número de Seguimiento"
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr "Información de seguimiento del envío"
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr "El envío ya ha sido enviado"
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr "El envío no tiene artículos de stock asignados"
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr "El artículo de stock no ha sido asignado"
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr "No se puede asignar el artículo de stock a una línea con una parte diferente"
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr "No se puede asignar stock a una línea sin una pieza"
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr "La cantidad de asignación no puede exceder la cantidad de stock"
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr "Artículo de stock sobreasignado"
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr "La cantidad debe ser 1 para el stock serializado"
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr "La orden de venta no coincide con el envío"
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr "El envío no coincide con el pedido de venta"
-
-#: order/models.py:1419
-msgid "Line"
-msgstr "Línea"
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr "Envío"
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr "Número de envío"
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr "Nota de envío"
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr "Número de Seguimiento"
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr "Información de seguimiento del envío"
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr "El envío ya ha sido enviado"
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr "El envío no tiene artículos de stock asignados"
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr "El artículo de stock no ha sido asignado"
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr "No se puede asignar el artículo de stock a una línea con una parte diferente"
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr "No se puede asignar stock a una línea sin una pieza"
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr "La cantidad de asignación no puede exceder la cantidad de stock"
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr "Artículo de stock sobreasignado"
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr "La cantidad debe ser 1 para el stock serializado"
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr "La orden de venta no coincide con el envío"
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr "El envío no coincide con el pedido de venta"
+
+#: order/models.py:1397
+msgid "Line"
+msgstr "Línea"
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr "Referencia del envío del pedido de venta"
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr "Ítem"
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr "Seleccionar artículo de stock para asignar"
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr "Especificar la cantidad de asignación de stock"
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr "El pedido no puede ser cancelado"
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr "Moneda del precio de compra"
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr "Artículo en línea"
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr "La línea del artículo no coincide con la orden de compra"
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr "Seleccione la ubicación de destino para los artículos recibidos"
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr "Hash del Código de barras"
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr "Identificador único"
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr "Código de barras en uso"
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr "Se deben proporcionar elementos de línea"
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr "Se requiere ubicación de destino"
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr "Los valores del código de barras deben ser únicos"
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr "Moneda del precio de venta"
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr "No se proporcionaron detalles de envío"
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr "Artículo en línea no está asociado con este pedido"
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr "La cantidad debe ser positiva"
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr "Introduzca números de serie para asignar"
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr "El envío ya ha sido enviado"
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr "El envío no está asociado con este pedido"
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr "No se han encontrado coincidencias para los siguientes números de serie"
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr "Los siguientes números de serie ya están asignados"
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr "Incompleto"
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr "Emitido"
 
@@ -3996,10 +4051,10 @@ msgstr "Seleccionar Parte de Proveedor"
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr "Comprar artículos de orden"
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr "Añadir artículo de línea"
 
@@ -4063,7 +4118,7 @@ msgstr "Articulos Recibidos"
 msgid "Order Notes"
 msgstr "Notas del pedido"
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr "Imprimir lista de empaquetado"
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr "Esta orden de venta no ha sido completamente asignada"
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr "Referencia del cliente"
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr "Envíos pendientes"
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr "Acciones"
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr "Inventario Total"
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr "Stock Disponible"
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr "En pedido"
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr "Cantidad de entrada para el cálculo del precio"
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr "Introduce la descripción para esta prueba"
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr "Requerido"
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr "Cantidad del artículo en BOM"
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr "Opcional"
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr "Suma de comprobación de la línea en BOM"
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr "Heredado"
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr "Este artículo BOM es heredado por BOMs para partes variantes"
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr "Permitir variantes"
 
@@ -4624,7 +4680,7 @@ msgstr "Permitir variantes"
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr "Artículos de stock para partes variantes pueden ser usados para este artículo BOM"
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr "La cantidad debe ser un valor entero para las partes rastreables"
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr "Moneda de compra de ítem de stock"
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr "Seleccionar parte de la que copiar BOM"
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr "Eliminar Datos Existentes"
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr "Eliminar elementos BOM existentes antes de copiar"
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr "Incluye Heredado"
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr "Incluye elementos BOM que son heredados de partes con plantillas"
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr "Omitir filas no válidas"
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr "Activar esta opción para omitir filas inválidas"
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr "Limpiar BOM Existente"
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr "Varios resultados encontrados"
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr "No se encontraron partes coincidentes"
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr "La parte no está designada como componente"
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr "Cantidad no proporcionada"
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr "Cantidad no válida"
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr "Se requiere al menos un elemento BOM"
 
@@ -4824,7 +4880,7 @@ msgstr "Ruta de Categoría"
 msgid "Top level part category"
 msgstr "Categoría de partes de nivel superior"
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr "Subcategorías"
@@ -4837,7 +4893,7 @@ msgstr "Partes (incluyendo subcategorías)"
 msgid "Create new part"
 msgstr "Crear nueva parte"
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr "Nueva Parte"
 
@@ -4862,19 +4918,19 @@ msgstr "Imprimir Etiquetas"
 msgid "Part Parameters"
 msgstr "Parámetros de Parte"
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr "Crear Categoría de Parte"
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr "Crear Parte"
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr "La pieza es virtual (no una pieza física)"
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr "Inactivo"
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr "Mostrar Detalles de Parte"
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr "Esta parte es una variante de %(link)s"
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr "En Stock"
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr "Puede construir"
 
@@ -5247,7 +5304,7 @@ msgstr "Calcular"
 msgid "No matching images found"
 msgstr "No se encontraron imágenes coincidentes"
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr "Ocultar Detalles de la Parte"
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr "Costo Total"
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr "Ningún precio de proveedor disponible"
 
@@ -5357,7 +5414,7 @@ msgstr "Mostrar precio de venta"
 msgid "Calculation parameters"
 msgstr "Parámetros de cálculo"
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr "Coste de Proveedor"
 
@@ -5450,40 +5507,40 @@ msgstr "Crear nueva variante de pieza"
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr "Crear una nueva variante de la plantilla <em>'%(full_name)s'</em>."
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr "Base de datos desconocida"
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr "Coincidir Referencias"
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr "Ninguna"
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr "Código QR de Parte"
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr "Seleccionar Imagen de Parte"
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr "Imagen de parte actualizada"
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr "Imagen de parte no encontrada"
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr "Precio de parte"
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr "No se encontró autor"
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr "No se encontró fecha"
 
@@ -5742,35 +5799,35 @@ msgstr "Filtros de búsqueda de partes (lista separada por comas de pares clave=
 msgid "Purchase order query filters"
 msgstr "Filtros de búsqueda de orden de compra"
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr "Filtros de búsqueda de pedidos de ventas"
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr "Fragmento"
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr "Archivo de reporte snippet"
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr "Descripción de archivo de fragmento"
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr "Activo"
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr "Reportar archivo de activos"
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr "Descripción del archivo de activos"
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr "Requerido para"
 
@@ -5784,11 +5841,11 @@ msgstr "Artículo Stock Informe de prueba"
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr "Número de serie"
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr "Resultados de la Prueba"
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr "Prueba"
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr "Resultado"
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr "Fecha"
 
@@ -5828,7 +5885,7 @@ msgstr "Elementos instalados"
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr "Debe suministrarse una pieza válida"
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr "Propietario"
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr "Seleccionar Propietario"
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr "Ya existe un Stock con este número de serie"
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr "Tipo de pieza ('{pf}') debe ser {pe}"
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr "La cantidad debe ser 1 para el artículo con un número de serie"
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr "Número de serie no se puede establecer si la cantidad es mayor que 1"
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr "El objeto no puede pertenecer a sí mismo"
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr "El elemento debe tener una referencia de construcción si is_building=True"
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr "La referencia de la construcción no apunta al mismo objeto de parte"
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr "Artículo de stock padre"
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr "Parte base"
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr "Seleccione una parte del proveedor correspondiente para este artículo de stock"
 
@@ -6030,7 +6087,7 @@ msgstr "El artículo de stock está en producción"
 msgid "Serialized stock cannot be merged"
 msgstr "Stock serializado no puede ser combinado"
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr "Artículos de Stock Duplicados"
 
@@ -6050,160 +6107,164 @@ msgstr "Los códigos de estado del stock deben coincidir"
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr "Stock no se puede mover porque no está en stock"
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr "Notas de entrada"
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr "Debe proporcionarse un valor para esta prueba"
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr "El archivo adjunto debe ser subido para esta prueba"
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr "Nombre del test"
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr "Resultado de la prueba"
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr "Valor de salida de prueba"
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr "Adjunto de resultados de prueba"
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr "Notas de prueba"
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr "Precio de compra de este artículo de stock"
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr "Introduzca el número de elementos de stock para serializar"
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr "La cantidad no debe exceder la cantidad disponible de stock ({q})"
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr "Introduzca números de serie para nuevos elementos"
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr "Ubicación de stock de destino"
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr "Campo de nota opcional"
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr "Los números de serie no se pueden asignar a esta parte"
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr "Números de serie ya existen"
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr "Añadir nota de transacción (opcional)"
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr "La parte debe ser vendible"
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr "El artículo está asignado a una orden de venta"
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr "El artículo está asignado a una orden de creación"
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr "Cliente para asignar elementos de stock"
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr "La empresa seleccionada no es un cliente"
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr "Notas de asignación de stock"
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr "Debe proporcionarse una lista de artículos de stock"
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr "Notas de fusión de stock"
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr "Permitir proveedores no coincidentes"
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr "Permitir fusionar artículos de stock con diferentes piezas de proveedor"
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr "Permitir estado no coincidente"
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr "Permitir fusionar elementos de stock con diferentes códigos de estado"
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr "Debe proporcionar al menos dos artículos de stock"
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr "Valor de clave primaria de Stock"
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr "Notas de transacción de stock"
 
@@ -6228,7 +6289,7 @@ msgstr "Datos de Prueba"
 msgid "Test Report"
 msgstr "Informe de Prueba"
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr "Eliminar Datos de Prueba"
 
@@ -6240,7 +6301,7 @@ msgstr "Añadir Datos de Prueba"
 msgid "Installed Stock Items"
 msgstr "Elementos de Stock instalados"
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr "Instalar elemento de stock"
 
@@ -6248,7 +6309,7 @@ msgstr "Instalar elemento de stock"
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr "Añadir Resultado de Prueba"
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr "Ubicación no establecida"
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr "Este ítem expiró el %(item.expiry_date)s"
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr "Expirado"
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr "Este ítem expira el %(item.expiry_date)s"
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr "Desactualizado"
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr "Última actualización"
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr "Confirmar Email"
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr "Confirme que <a href=\"mailto:%(email)s\">%(email)s</a> es una dirección de correo electrónico para el usuario %(user_display)s."
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "Confirmar"
 
@@ -7545,7 +7606,7 @@ msgstr "Añadir archivo adjunto"
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7592,7 +7653,7 @@ msgid "The following parts are low on required stock"
 msgstr "Las siguientes partes están bajas en stock requerido"
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr "Cantidad requerida"
 
@@ -7613,22 +7674,6 @@ msgstr "Cantidad Mínima"
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr "Especificar URL para descargar la imagen"
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr "Debe ser una URL de imagen válida"
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr "Servidor remoto debe ser accesible"
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr "La imagen remota no debe exceder el tamaño máximo permitido de archivo"
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr "Sin Respuesta"
@@ -7697,23 +7742,23 @@ msgstr "Código de error"
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr "No se encontraron archivos adjuntos"
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr "Editar archivos adjuntos"
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr "Fecha de subida"
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr "Editar adjunto"
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr "Eliminar adjunto"
 
@@ -7823,10 +7868,10 @@ msgstr "Mostrar datos de fila"
 msgid "Row Data"
 msgstr "Datos de Fila"
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr "Cerrar"
@@ -7836,22 +7881,22 @@ msgid "Download BOM Template"
 msgstr "Descargar plantilla BOM"
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr "Formato"
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr "Seleccionar formato de archivo"
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
-msgstr "Cascada"
+msgid "Multi Level BOM"
+msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
-msgstr "Descargar BOM en cascada / multi-nivel"
+msgid "Include BOM data for subassemblies"
+msgstr ""
 
 #: templates/js/translated/bom.js:301
 msgid "Levels"
@@ -7861,422 +7906,426 @@ msgstr "Niveles"
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr "Seleccione el número máximo de niveles BOM a exportar (0 = todos los niveles)"
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr "Incluye Parámetros de Datos"
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr "Incluye los datos del parámetro de la pieza en BOM exportado"
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr "Incluye Datos de Stock"
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr "Incluye datos de stock de piezas en BOM exportado"
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr "Incluir Datos del fabricante"
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr "Incluye datos del fabricante de piezas en BOM exportado"
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr "Incluir Datos del Proveedor"
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr "Incluye datos del proveedor de piezas en BOM exportado"
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr "Eliminar parte sustituta"
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr "Seleccione y añada una nueva parte sustituta usando la siguiente entrada"
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr "¿Está seguro que desea eliminar este enlace de la parte sustituta?"
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr "Eliminar parte sustituta"
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr "Añadir sustituto"
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr "Editar sustitutos de elementos BOM"
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr "Todos los elementos BOM seleccionados serán eliminados"
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr "¿Eliminar elementos BOM seleccionados?"
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr "Sustitutos Disponibles"
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr "Stock de variante permitido"
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr "Sustitutos"
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr "Rango de Precio de Compra"
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr "Precio Promedio de Compra"
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr "Ver BOM"
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr "Validar Artículo para el BOM"
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr "Esta línea ha sido validada"
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr "Editar partes sustitutas"
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr "Editar Artículo de BOM"
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr "Eliminar Artículo de BOM"
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr "No se encontraron elementos BOM"
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr "Parte requerida"
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr "Heredado de BOM superior"
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr "Editar Orden de Trabajo"
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr "Crear Orden de Trabajo"
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr "¿Estás seguro de que quieres cancelar esta construcción?"
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr "El pedido de construcción está listo para ser completado"
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr "Orden de construcción incompleta"
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr "Completar Orden de Construcción"
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr "Siguiente número de serie disponible"
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr "Último número de serie"
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr "La ley de materiales contiene partes rastreables"
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr "Las salidas de construcción deben ser generadas individualmente"
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr "Las partes rastreables pueden tener números de serie especificados"
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr "Introduzca números de serie para generar múltiples salidas de construcción única"
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr "Crear Salida de Trabajo"
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr "Asignar elementos de stock a esta salida de trabajo"
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr "Desasignar stock de la salida de trabajo"
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr "Completar salida de trabajo"
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr "Eliminar Salida de Trabajo"
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr "¿Está seguro que desea desasignar los artículos de stock de este trabajo?"
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr "Desasignar artículos de stock"
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr "Seleccionar Salida de Trabajo"
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr "Se debe seleccionar al menos una salida de trabajo"
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr "Salida"
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr "Completar salidas de trabajo"
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr "Eliminar Salidas"
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr "No se encontraron asignaciones de órdenes de trabajo"
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr "Ubicación no especificada"
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr "No se encontraron salidas de trabajo activas"
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr "Editar asignación de stock"
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr "Eliminar asignación de stock"
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr "Editar Asignación"
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr "Quitar asignación"
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr "Piezas sustitutas disponibles"
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr "Cantidad por"
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr "Asignadas"
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr "Stock de Trabajo"
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr "Pedido de stock"
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr "Asignar stock"
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "Seleccionar partes"
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr "Debe seleccionar al menos una parte para asignar"
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr "Especificar la cantidad de asignación de stock"
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr "Seleccionar ubicación de origen (dejar en blanco para tomar de todas las ubicaciones)"
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr "Asignar Artículos de Stock a Orden de Trabajo"
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr "No hay ubicaciones de stock coincidentes"
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr "No hay artículos de stock coincidentes"
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr "No hay trabajos que coincidan con la consulta"
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr "Seleccionar"
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr "Orden de trabajo atrasada"
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr "No hay información de usuario"
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr "No se asignaron partes para"
 
@@ -8284,7 +8333,7 @@ msgstr "No se asignaron partes para"
 msgid "Add Manufacturer"
 msgstr "Agregar Fabricante"
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr "Añadir Parte del fabricante"
 
@@ -8292,99 +8341,99 @@ msgstr "Añadir Parte del fabricante"
 msgid "Edit Manufacturer Part"
 msgstr "Editar Parte del Fabricante"
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr "Añadir Proveedor"
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr "Añadir Parte de Proveedor"
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr "Se eliminarán todas las partes del proveedor seleccionadas"
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr "Añadir nueva Empresa"
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr "Partes Suministradas"
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr "Partes Fabricadas"
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr "No se encontró información de la empresa"
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr "Eliminar Partes del Fabricante"
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr "Eliminar parámetros"
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr "No se encontraron partes del fabricante"
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr "Plantilla de parte"
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr "Parte ensamblada"
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr "No se encontraron parámetros"
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr "Editar parámetro"
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr "Eliminar parámetro"
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr "Editar parámetro"
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr "Eliminar parámetro"
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr "No se encontraron piezas de proveedor"
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr "Editar proveedor"
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr "Eliminar ítem del proveedor"
 
@@ -8422,61 +8471,61 @@ msgstr "Limpiar todos los filtros"
 msgid "Create filter"
 msgstr "Crear filtro"
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr "Acción Prohibida"
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr "Operación de creación no permitida"
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr "Operación de actualización no permitida"
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr "Operación de eliminación no permitida"
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr "Operación de visualización no permitida"
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr "Introduzca un número válido"
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr "Existen errores en el formulario"
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr "No hay resultados"
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr "Buscando"
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr "Limpiar entrada"
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8625,25 +8674,25 @@ msgstr "ID de Ubicación"
 msgid "Build ID"
 msgstr "ID de construcción"
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr "ID del Pedido"
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr "ID de envío"
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr "ID de Categoría"
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr "ID de Parte del Fabricante"
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr "ID Parte del Proveedor"
 
@@ -8667,381 +8716,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr "No se ha asignado ningún artículo de stock a este envío"
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr "Los siguientes artículos de stock serán enviados"
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr "Completar Envío"
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr "Confirmar Envío"
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr "Marcar pedido como completado?"
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr "Este pedido tiene artículos de línea que no han sido marcados como recibidos."
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr "Completar este pedido significa que los artículos de orden y línea ya no serán editables."
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr "Después de realizar esta orden de compra, los artículos de línea ya no serán editables."
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr "Cancelar esta orden significa que la orden ya no será editable."
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr "Crear Nuevo Envío"
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr "Añadir Cliente"
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr "Crear Orden de Venta"
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr "Exportar Orden"
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr "Seleccionar Artículos de Línea"
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr "Debe seleccionar al menos un elemento de línea"
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr "Cantidad a recibir"
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr "Estado del Stock"
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr "Código de Pedido"
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr "Pedido"
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr "Confirmar recepción de artículos"
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr "Recibir artículos de orden de compra"
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr "No se encontraron órdenes de compra"
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr "El pedido está vencido"
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr "Artículos"
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr "Editar Ítem de Línea"
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr "Eliminar Ítemde Línea"
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr "No hay elementos de línea"
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr "Precio Unitario"
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr "Precio Total"
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr "Recibir ítem de línea"
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr "Editar elemento de línea"
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr "Eliminar elemento de línea"
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr "No se encontraron ventas"
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr "Cliente Inválido"
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr "Editar envío"
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr "Completar envío"
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr "Eliminar envío"
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr "Editar envío"
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr "Eliminar Envío"
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr "No se encontraron envíos coincidentes"
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr "Referencia de Envío"
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr "No enviado"
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr "Seguimiento"
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr "Confirmar asignación de stock"
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr "Asignar artículos de stock a pedido de venta"
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr "No se encontraron asignaciones de órdenes"
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr "Editar Asignación de Stock"
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr "Confirmar Operación de Eliminar"
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr "Eliminar Adjudicación de Stock"
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr "Enviado al cliente"
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr "Ubicación de stock no especificada"
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr "Asignar números de serie"
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr "Comprar stock"
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr "Calcular precio"
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr "No se puede eliminar ya que los artículos han sido enviados"
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr "No se puede eliminar ya que los elementos han sido asignados"
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr "Asignar Números de Serie"
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr "Actualizar Precio Unitario"
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr "No hay elementos de línea coincidentes"
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9218,7 +9267,7 @@ msgid "Copy Bill of Materials"
 msgstr "Copiar Factura de Materiales"
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr "Stock bajo"
 
@@ -9246,11 +9295,11 @@ msgstr "Pieza vendible"
 msgid "No variants found"
 msgstr "No se encontraron variantes"
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr "Eliminar relación de parte"
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr "Eliminar Relación de Parte"
 
@@ -9267,7 +9316,7 @@ msgid "No category"
 msgstr "Sin categoría"
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr "Mostrar como lista"
 
@@ -9291,7 +9340,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr "Mostrar como árbol"
 
@@ -9299,7 +9348,7 @@ msgstr "Mostrar como árbol"
 msgid "Subscribed category"
 msgstr "Categoría suscrita"
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr "Ruta"
 
@@ -9722,7 +9771,7 @@ msgid "Stock item is destroyed"
 msgstr "Artículo de stock destruido"
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr "Agotado"
 
@@ -9730,95 +9779,95 @@ msgstr "Agotado"
 msgid "Stocktake"
 msgstr "Inventario"
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr "Parte del proveedor no especificada"
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr "No hay artículos de stock que coincidan con la consulta"
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr "Establecer estado de stock"
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr "Seleccionar Código de Estado"
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr "Debe seleccionar el código de estado"
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr "Detalles"
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr "Ubicación ya no existe"
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr "La orden de compra ya no existe"
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr "El cliente ya no existe"
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr "Artículo de stock ya no existe"
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr "Añadido"
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr "Eliminado"
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr "Ningún elemento instalado"
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr "Desinstalar elemento de stock"
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr "Los artículos de stock sólo pueden ser instalados si cumplen con los siguientes criterios"
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9834,223 +9883,223 @@ msgstr "Parte Ensamblada"
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr "Validado"
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr "Permitir stock de variante"
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr "Incluir sub-ubicación"
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr "Incluir ubicaciones"
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr "Incluir subcategorías"
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr "Suscrito"
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
+#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:226
 msgid "Is Serialized"
 msgstr "Es Serializado"
 
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:147
+#: templates/js/translated/table_filters.js:233
 msgid "Serial number GTE"
 msgstr "Número Serial GTE"
 
-#: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
+#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/table_filters.js:234
 msgid "Serial number greater than or equal to"
 msgstr "Número de serie mayor o igual a"
 
-#: templates/js/translated/table_filters.js:147
-#: templates/js/translated/table_filters.js:233
+#: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
 msgid "Serial number LTE"
 msgstr "Número Serial LTE"
 
-#: templates/js/translated/table_filters.js:148
-#: templates/js/translated/table_filters.js:234
+#: templates/js/translated/table_filters.js:152
+#: templates/js/translated/table_filters.js:238
 msgid "Serial number less than or equal to"
 msgstr "Número de serie menor o igual que"
 
-#: templates/js/translated/table_filters.js:151
-#: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr "Número de serie"
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr "Código de lote"
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr "Partes activas"
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr "Mostrar stock para las partes activas"
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr "Parte es un ensamblado"
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr "Está asignado"
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr "El artículo ha sido asignado"
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr "Stock disponible para uso"
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr "Incluye stock en sub-ubicaciones"
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr "Mostrar artículos de stock que están agotados"
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr "Mostrar elementos en stock"
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr "En Producción"
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr "Mostrar artículos que están en producción"
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr "Incluye Variantes"
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr "Incluye artículos de stock para partes de variantes"
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr "Instalado"
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr "Mostrar elementos de stock que están instalados en otro artículo"
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr "Mostrar elementos que han sido asignados a un cliente"
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr "Estado del stock"
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr "Tiene precio de compra"
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr "Mostrar artículos de stock que tienen un precio de compra establecido"
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr "Mostrar artículos de stock que han caducado"
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr "Mostrar stock que está cerca de caducar"
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr "Estado de la construcción"
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr "Asignado a mí"
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr "Estado del pedido"
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr "Pendiente"
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr "Incluye partes en subcategorías"
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr "Mostrar partes activas"
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr "Tiene IPN"
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr "La parte tiene número de pieza interno"
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr "Comprable"
 
diff --git a/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/InvenTree/locale/es_MX/LC_MESSAGES/django.po
index 60765cc975..09dfa3d5a8 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: 2022-07-04 02:07+0000\n"
+"POT-Creation-Date: 2022-07-09 00:30+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"
@@ -26,11 +26,11 @@ msgstr ""
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr ""
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:374
 #: build/templates/build/sidebar.html:21 company/models.py:523
 #: company/templates/company/sidebar.html:25 order/models.py:929
 #: order/templates/order/po_sidebar.html:11
@@ -41,10 +41,10 @@ msgstr ""
 #: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
 #: stock/serializers.py:909 stock/serializers.py:1041
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1100
+#: templates/js/translated/company.js:952 templates/js/translated/order.js:2040
 #: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3649 templates/js/translated/order.js:4047
+#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
 #: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
 msgid "Notes"
 msgstr ""
@@ -81,7 +81,7 @@ msgstr ""
 msgid "You must type the same email each time."
 msgstr ""
 
-#: InvenTree/forms.py:282 common/models.py:1843
+#: InvenTree/forms.py:282 common/models.py:1850
 msgid "Token"
 msgstr ""
 
@@ -141,7 +141,7 @@ msgstr ""
 
 #: InvenTree/models.py:191 stock/models.py:2096
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr ""
 
@@ -150,11 +150,11 @@ msgid "Select file to attach"
 msgstr ""
 
 #: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: company/models.py:510 order/models.py:136 order/models.py:1268
 #: part/models.py:795
 #: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: templates/js/translated/company.js:645
+#: templates/js/translated/company.js:936 templates/js/translated/order.js:2687
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr ""
@@ -165,7 +165,7 @@ msgid "Link to external URL"
 msgstr ""
 
 #: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr ""
 
@@ -173,9 +173,9 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1619
+#: common/models.py:1620 common/models.py:1843 common/models.py:1844
+#: common/models.py:2106 common/models.py:2107 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
 #: templates/js/translated/stock.js:2576
@@ -215,7 +215,7 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1829
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -223,8 +223,8 @@ msgstr ""
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:534
+#: templates/js/translated/company.js:747
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
 #: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
@@ -242,10 +242,10 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:118
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:847
+#: templates/js/translated/build.js:2480 templates/js/translated/company.js:398
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:1656
 #: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
 #: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
@@ -433,7 +433,7 @@ msgid "InvenTree system health checks failed"
 msgstr ""
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:326
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr ""
 
@@ -462,8 +462,8 @@ msgstr ""
 msgid "Returned"
 msgstr ""
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3275 templates/js/translated/order.js:3624
+#: InvenTree/status_codes.py:141 order/models.py:1151
+#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
 msgid "Shipped"
 msgstr ""
 
@@ -555,7 +555,7 @@ msgstr ""
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr ""
 
@@ -656,7 +656,7 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:106
 #: templates/email/build_order_completed.html:16
 #: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:728
+#: templates/js/translated/build.js:732
 msgid "Build Order"
 msgstr ""
 
@@ -679,10 +679,10 @@ msgstr ""
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3468
-#: templates/js/translated/order.js:3976
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:854
+#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
+#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
+#: templates/js/translated/order.js:3978
 msgid "Reference"
 msgstr ""
 
@@ -701,11 +701,11 @@ msgstr ""
 
 #: build/models.py:214 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1024 order/models.py:1135 order/models.py:1136
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:772
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -718,16 +718,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
 #: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1154 templates/js/translated/build.js:1647
-#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:801
+#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
 #: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:485
+#: templates/js/translated/company.js:597
+#: templates/js/translated/company.js:856 templates/js/translated/order.js:100
 #: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
 #: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3452
+#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
 #: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
@@ -749,7 +749,7 @@ msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
 #: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2071 templates/js/translated/order.js:2818
+#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
 msgid "Source Location"
 msgstr ""
 
@@ -812,7 +812,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2558
+#: templates/js/translated/build.js:2562
 msgid "Completion Date"
 msgstr ""
 
@@ -820,7 +820,7 @@ msgstr ""
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2526
+#: build/models.py:303 templates/js/translated/build.js:2530
 msgid "Issued by"
 msgstr ""
 
@@ -833,7 +833,7 @@ msgstr ""
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2538 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
 msgid "Responsible"
 msgstr ""
 
@@ -887,7 +887,7 @@ msgstr ""
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1187 order/models.py:1405
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
@@ -900,7 +900,7 @@ msgid "Selected stock item not found in BOM"
 msgstr ""
 
 #: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
 #: templates/navbar.html:38
 msgid "Build"
 msgstr ""
@@ -914,11 +914,11 @@ msgstr ""
 #: stock/serializers.py:867 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:739 templates/js/translated/build.js:744
-#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2643
+#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
+#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
 #: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3325
+#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
 #: templates/js/translated/stock.js:2512
 msgid "Stock Item"
@@ -930,9 +930,9 @@ msgstr ""
 
 #: build/models.py:1349 build/serializers.py:183
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
+#: build/templates/build/detail.html:34 common/models.py:1651
 #: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
+#: order/models.py:920 order/models.py:1446 order/serializers.py:1136
 #: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
 #: part/forms.py:74 part/forms.py:89 part/models.py:2601
 #: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
@@ -946,17 +946,17 @@ msgstr ""
 #: stock/serializers.py:291 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:423
-#: templates/js/translated/build.js:575 templates/js/translated/build.js:766
-#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
-#: templates/js/translated/build.js:2086
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:692
+#: templates/js/translated/bom.js:862 templates/js/translated/build.js:427
+#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
+#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
+#: templates/js/translated/build.js:2090
 #: templates/js/translated/model_renderers.js:120
 #: templates/js/translated/order.js:117 templates/js/translated/order.js:886
 #: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
 #: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3242 templates/js/translated/order.js:3331
-#: templates/js/translated/order.js:3474 templates/js/translated/order.js:3982
+#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
+#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
 #: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
@@ -978,7 +978,7 @@ msgid "Destination stock item"
 msgstr ""
 
 #: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1164
+#: templates/js/translated/build.js:1168
 msgid "Build Output"
 msgstr ""
 
@@ -1004,7 +1004,7 @@ msgstr ""
 
 #: build/serializers.py:198 build/serializers.py:639 order/models.py:355
 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
+#: part/serializers.py:935 stock/models.py:478 stock/models.py:1244
 #: stock/serializers.py:300
 msgid "Quantity must be greater than zero"
 msgstr ""
@@ -1048,10 +1048,10 @@ msgstr ""
 #: stock/serializers.py:902 stock/serializers.py:1135
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:751
-#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3250
-#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3339
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
+#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
+#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
+#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
 #: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
@@ -1065,7 +1065,7 @@ msgstr ""
 #: build/serializers.py:363 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:62 order/models.py:665
 #: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
 #: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
 #: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
 #: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
@@ -1289,9 +1289,9 @@ msgstr ""
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
+#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
 #: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3537 templates/js/translated/part.js:1040
+#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
 msgid "Target Date"
 msgstr ""
 
@@ -1304,22 +1304,22 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:392
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr ""
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1128
+#: order/models.py:1222 order/models.py:1353
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
 #: report/templates/report/inventree_build_order_base.html:136
@@ -1345,7 +1345,7 @@ msgstr ""
 msgid "Build Order cannot be completed as incomplete build outputs remain"
 msgstr ""
 
-#: build/templates/build/build_base.html:256
+#: build/templates/build/build_base.html:257
 msgid "Delete Build Order"
 msgstr ""
 
@@ -1361,7 +1361,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
+#: build/templates/build/detail.html:49 order/models.py:1046
 #: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
 msgid "Destination"
 msgstr ""
@@ -1376,19 +1376,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1180
+#: templates/js/translated/build.js:1184
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
 #: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:151
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2518
+#: templates/js/translated/build.js:2522
 msgid "Created"
 msgstr ""
 
@@ -1408,7 +1408,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1899
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1674,893 +1674,901 @@ msgstr ""
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
+#: common/models.py:854
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:855
-msgid "Enable barcode scanner support"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:861
-msgid "Barcode Webcam Support"
+#: common/models.py:861 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:868
-msgid "IPN Regex"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:869
+msgid "Allow barcode scanning via webcam in browser"
+msgstr ""
+
+#: common/models.py:875
+msgid "IPN Regex"
+msgstr ""
+
+#: common/models.py:876
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:873
+#: common/models.py:880
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:874
+#: common/models.py:881
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:887
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:888
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:894
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:895
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:901
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:902
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:908
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:909
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:915
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:916
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:922 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:923
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:439
+#: common/models.py:929 part/models.py:887 templates/js/translated/bom.js:1447
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:930
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:447
+#: common/models.py:936 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:937
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:943 part/models.py:904
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:937
+#: common/models.py:944
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:468
+#: common/models.py:950 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:944
+#: common/models.py:951
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:957 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:951
+#: common/models.py:958
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:964 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:965
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:971
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:972
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:978
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:979
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:990
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:991
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1002
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1003
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1009
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1010
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1016
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1017
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1023
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1024
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1030
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1031
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1037
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1038
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1045
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1046
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1052
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1053
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1062
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1063
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1069 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1063
+#: common/models.py:1070
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1076
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1077
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1087
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1088
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1094
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1095
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1101
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1102
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1107
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1108
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1114
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1115
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1121
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1122
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1124
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1129
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1130
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1136
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1137
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1143
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:1137
+#: common/models.py:1144
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:1142
+#: common/models.py:1149
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:1143
+#: common/models.py:1150
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:1147
+#: common/models.py:1154
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:1148
+#: common/models.py:1155
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:1153
+#: common/models.py:1160
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1161
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
+#: common/models.py:1167
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:1161
+#: common/models.py:1168
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1174
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1175
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1181
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1182
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1188
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1189
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1195
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1196
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1202
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1203
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1209
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1210
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1216
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1217
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1223
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1224
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1230
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1231
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1237
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1238
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1246
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1247
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1254
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1255
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1262
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1263
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1270
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1271
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1278
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1279
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1296 common/models.py:1612
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1318
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1319
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1325
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1326
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1332
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1333
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1339
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1340
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1346
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1347
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1353
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1354
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1360
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1361
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1367
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1368
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1374
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1375
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1381
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1382
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1388
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1389
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1395
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1396
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1402
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1403
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1409
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1410
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1416
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1417
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1423
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1424
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1430
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1431
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1437
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1438
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1444
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1445
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1451
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1452
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1458
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1459
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1465
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1466
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1472
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1473
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1479
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1480
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1486
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1487
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1493
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1494
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1500
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1501
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1507
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1508
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1514
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1515
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1521
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1522
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1528
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1529
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1535
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1536
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1542
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1543
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1549
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1550
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1556
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1557
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1563
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1564
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1570
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1571
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1577
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1578
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1592 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1593
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1652 company/forms.py:37
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
+#: common/models.py:1659 company/serializers.py:319
+#: company/templates/company/supplier_part.html:284 order/models.py:961
 #: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1660
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1820 common/models.py:1998
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1821
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1830
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1835 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:308
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1836
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1851
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1858
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1859
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1965
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1966
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1974
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1975
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1982
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:1983
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:1989
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:1990
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:1999
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2004
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2005
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2631,7 +2639,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:402
 msgid "Website"
 msgstr ""
 
@@ -2732,11 +2740,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:411
+#: templates/js/translated/company.js:386
+#: templates/js/translated/company.js:487
+#: templates/js/translated/company.js:622
+#: templates/js/translated/company.js:907 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2747,9 +2755,9 @@ msgstr ""
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
 #: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
+#: templates/js/translated/company.js:486
+#: templates/js/translated/company.js:638
+#: templates/js/translated/company.js:925 templates/js/translated/order.js:1907
 #: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
 msgid "MPN"
 msgstr ""
@@ -2779,8 +2787,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2089 templates/js/translated/company.js:535
+#: templates/js/translated/company.js:753 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2792,7 +2800,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2810,10 +2818,10 @@ msgstr ""
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
 #: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
+#: templates/js/translated/company.js:390
+#: templates/js/translated/company.js:881 templates/js/translated/order.js:1643
 #: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2861,7 +2869,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:957 templates/js/translated/stock.js:1975
 msgid "Packaging"
 msgstr ""
 
@@ -2880,10 +2888,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1791
+#: templates/js/translated/build.js:2654 templates/js/translated/company.js:962
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2913,7 +2921,7 @@ msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:375
 msgid "Company"
 msgstr ""
 
@@ -2931,7 +2939,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:318
 msgid "Edit Company"
 msgstr ""
 
@@ -2959,9 +2967,9 @@ msgstr ""
 #: stock/models.py:637 stock/serializers.py:796
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
+#: templates/js/translated/company.js:382 templates/js/translated/order.js:2458
 #: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -3075,7 +3083,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1658
+#: templates/js/translated/build.js:1662
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3096,12 +3104,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:670
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:671
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3129,7 +3137,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3176,7 +3184,7 @@ msgstr ""
 #: company/templates/company/supplier_part.html:7
 #: company/templates/company/supplier_part.html:24 stock/models.py:601
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
+#: templates/js/translated/company.js:897 templates/js/translated/order.js:884
 #: templates/js/translated/stock.js:1932
 msgid "Supplier Part"
 msgstr ""
@@ -3427,7 +3435,7 @@ msgstr ""
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:136 order/models.py:1269
 msgid "Link to external page"
 msgstr ""
 
@@ -3512,7 +3520,7 @@ msgstr ""
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
+#: order/models.py:675 order/models.py:1227
 #: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
 msgid "Shipment Date"
 msgstr ""
@@ -3561,25 +3569,25 @@ msgstr ""
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:962
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:992
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:1000
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
+#: order/models.py:1006 order/models.py:1086 order/models.py:1127
+#: order/models.py:1221 order/models.py:1353
 #: templates/js/translated/order.js:3123
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:1007 order/models.py:1086
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
@@ -3591,154 +3599,154 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1025
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
+#: order/models.py:1032 order/templates/order/order_base.html:169
 #: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
 #: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:330
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1033
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
+#: order/models.py:1040 part/templates/part/prices.html:181 stock/models.py:727
 #: stock/serializers.py:169 stock/templates/stock/item_base.html:191
 #: templates/js/translated/stock.js:1963
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1041
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1049
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1115
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1120
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1146 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1147
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1152
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1228
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1235
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1236
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
+#: order/models.py:1244
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1247
+#: order/models.py:1248
 msgid "Shipment notes"
 msgstr ""
 
-#: order/models.py:1253
+#: order/models.py:1254
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1254
+#: order/models.py:1255
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1261
+#: order/models.py:1262
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1262
+#: order/models.py:1263
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1280
+#: order/models.py:1281
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1283
+#: order/models.py:1284
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1386 order/models.py:1388
+#: order/models.py:1387 order/models.py:1389
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1392
+#: order/models.py:1393
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1394
+#: order/models.py:1395
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1397
+#: order/models.py:1398
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1401
+#: order/models.py:1402
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: order/models.py:1407 order/serializers.py:1047
+#: order/models.py:1408 order/serializers.py:1047
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1410
+#: order/models.py:1411
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1411
+#: order/models.py:1412
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1419
+#: order/models.py:1420
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
+#: order/models.py:1428 order/serializers.py:1151 order/serializers.py:1275
 #: templates/js/translated/model_renderers.js:313
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1429
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1442 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1443
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1446
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -3997,8 +4005,8 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:428
-#: templates/js/translated/build.js:580 templates/js/translated/build.js:1972
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
+#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
 #: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
 #: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
@@ -4120,8 +4128,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1880
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1109
+#: templates/js/translated/build.js:1884
 msgid "Actions"
 msgstr ""
 
@@ -4151,47 +4159,47 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:488
+#: part/api.py:489
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:509
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:526
+#: part/api.py:527
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:558
+#: part/api.py:559
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:644
+#: part/api.py:645
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:645
+#: part/api.py:646
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:651
+#: part/api.py:652
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1074
+#: part/api.py:1075
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:1078
+#: part/api.py:1079
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:1093
+#: part/api.py:1094
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:1124 part/api.py:1128 part/api.py:1143 part/api.py:1147
+#: part/api.py:1125 part/api.py:1129 part/api.py:1144 part/api.py:1148
 msgid "This field is required"
 msgstr ""
 
@@ -4205,14 +4213,15 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3563
+#: templates/js/translated/order.js:3565
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:946 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
@@ -4457,7 +4466,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4572,8 +4581,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:873 templates/js/translated/bom.js:998
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4606,9 +4615,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:68
-#: templates/js/translated/table_filters.js:88
+#: templates/js/translated/bom.js:1015
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4617,7 +4626,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1007
 msgid "Allow Variants"
 msgstr ""
 
@@ -4673,75 +4682,75 @@ msgstr ""
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:773
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:781
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:782
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:787
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:788
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:793
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:794
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:799
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:800
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:840
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:841
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:871
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:914
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:917
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:920
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:929
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:937
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:958
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -5185,8 +5194,8 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:613
+#: templates/js/translated/company.js:872
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
@@ -5203,7 +5212,7 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5217,7 +5226,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1036
 msgid "Can Build"
 msgstr ""
 
@@ -5275,7 +5284,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:990
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5358,7 +5367,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:984
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5785,11 +5794,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:421 templates/js/translated/build.js:573
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:1671
+#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3240
-#: templates/js/translated/order.js:3329 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
+#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -6229,7 +6238,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6249,7 +6258,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6407,7 +6416,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1693
+#: templates/js/translated/build.js:1697
 msgid "No location set"
 msgstr ""
 
@@ -6421,7 +6430,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:261
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6431,12 +6440,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:267
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:968 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6679,7 +6688,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6710,7 +6719,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7371,7 +7380,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr ""
 
@@ -7545,7 +7554,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7592,7 +7601,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1482
 msgid "Required Quantity"
 msgstr ""
 
@@ -7697,23 +7706,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7917,89 +7926,93 @@ msgstr ""
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:685
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:701
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:820
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:830
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:834 templates/js/translated/build.js:1773
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
-#: templates/js/translated/order.js:3577
+#: templates/js/translated/bom.js:928 templates/js/translated/build.js:1818
+#: templates/js/translated/order.js:3579
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:933 templates/js/translated/build.js:1822
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/bom.js:935 templates/js/translated/build.js:1824
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:937 templates/js/translated/build.js:1826
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:955
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:970
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:977
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1026 templates/js/translated/bom.js:1146
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1053
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1117
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1119
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1121
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1123 templates/js/translated/bom.js:1285
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1125
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1221 templates/js/translated/build.js:1619
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1465 templates/js/translated/build.js:1757
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1487
 msgid "Inherited from parent BOM"
 msgstr ""
 
@@ -8035,248 +8048,248 @@ msgstr ""
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:219
+#: templates/js/translated/build.js:223
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:260 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:262 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:271
+#: templates/js/translated/build.js:275
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:272
+#: templates/js/translated/build.js:276
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:284
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:285
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:288
+#: templates/js/translated/build.js:292
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:319
+#: templates/js/translated/build.js:323
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:330
+#: templates/js/translated/build.js:334
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:339
+#: templates/js/translated/build.js:343
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:347
+#: templates/js/translated/build.js:351
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:370
+#: templates/js/translated/build.js:374
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:388
+#: templates/js/translated/build.js:392
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:408 templates/js/translated/build.js:560
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:409 templates/js/translated/build.js:561
+#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:463 templates/js/translated/build.js:615
+#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:481
+#: templates/js/translated/build.js:485
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:632
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:717
+#: templates/js/translated/build.js:721
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:755
+#: templates/js/translated/build.js:759
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1134
+#: templates/js/translated/build.js:1138
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1203
+#: templates/js/translated/build.js:1207
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1210
+#: templates/js/translated/build.js:1214
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1232
+#: templates/js/translated/build.js:1236
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1237
+#: templates/js/translated/build.js:1241
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1710 templates/js/translated/build.js:2661
-#: templates/js/translated/order.js:3277
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
+#: templates/js/translated/order.js:3279
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2662
-#: templates/js/translated/order.js:3278
+#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
+#: templates/js/translated/order.js:3280
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1730
+#: templates/js/translated/build.js:1734
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1740
+#: templates/js/translated/build.js:1744
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1765
+#: templates/js/translated/build.js:1769
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1782
+#: templates/js/translated/build.js:1786
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1808 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3582
+#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1839 templates/js/translated/build.js:2084
-#: templates/js/translated/build.js:2657 templates/js/translated/order.js:3596
+#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
+#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1887 templates/js/translated/order.js:3676
+#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/stock_table.html:50
+#: templates/js/translated/build.js:1895 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1894 templates/js/translated/order.js:3669
+#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1933 templates/js/translated/label.js:172
+#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
 #: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1934 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1983 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2057
+#: templates/js/translated/build.js:2061
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2058
+#: templates/js/translated/build.js:2062
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2072 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2100
+#: templates/js/translated/build.js:2104
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2111 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2183 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2280
+#: templates/js/translated/build.js:2284
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2281
+#: templates/js/translated/build.js:2285
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2283
+#: templates/js/translated/build.js:2287
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2288
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2289
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2306
+#: templates/js/translated/build.js:2310
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2413
+#: templates/js/translated/build.js:2417
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
 #: templates/js/translated/stock.js:2340
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2468
+#: templates/js/translated/build.js:2472
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2496
+#: templates/js/translated/build.js:2500
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2638
+#: templates/js/translated/build.js:2642
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8304,87 +8317,87 @@ msgstr ""
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:267
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:339
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:416
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:425
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:440
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:481
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:496
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:530
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:544
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:585
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:605
+#: templates/js/translated/company.js:864 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:609
+#: templates/js/translated/company.js:868 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:737 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:774 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:775 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:844
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:985
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:986
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8422,61 +8435,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8844,15 +8857,15 @@ msgstr ""
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3728
+#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3750
+#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3761
+#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
 msgid "Delete Line Item"
 msgstr ""
 
@@ -8860,22 +8873,22 @@ msgstr ""
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3462
+#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
 msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3487 templates/js/translated/order.js:3995
+#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3503 templates/js/translated/order.js:4011
+#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3545
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
 #: templates/js/translated/part.js:1048
 msgid "This line item is overdue"
 msgstr ""
@@ -8884,39 +8897,39 @@ msgstr ""
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3682
+#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3683
+#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3687
+#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4060
+#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4061
+#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4092
+#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4113
+#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4124
+#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
 msgid "Delete Line"
 msgstr ""
 
@@ -9000,48 +9013,48 @@ msgstr ""
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3254 templates/js/translated/order.js:3343
+#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3262 templates/js/translated/order.js:3352
+#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3666
+#: templates/js/translated/order.js:3668
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3672
+#: templates/js/translated/order.js:3674
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3679 templates/js/translated/order.js:3877
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3691
+#: templates/js/translated/order.js:3693
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3694
+#: templates/js/translated/order.js:3696
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3776
+#: templates/js/translated/order.js:3778
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3885
+#: templates/js/translated/order.js:3887
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3899
+#: templates/js/translated/order.js:3901
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4135
+#: templates/js/translated/order.js:4137
 msgid "No matching lines"
 msgstr ""
 
@@ -9218,7 +9231,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9722,7 +9735,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9831,222 +9844,226 @@ msgid "Assembled Part"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:64
-msgid "Validated"
+msgid "Has Available Stock"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:72
+msgid "Validated"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:110
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:111
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:121
-#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:429
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:472
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:136
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:226
 msgid "Is Serialized"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:139
-#: templates/js/translated/table_filters.js:225
+#: templates/js/translated/table_filters.js:147
+#: templates/js/translated/table_filters.js:233
 msgid "Serial number GTE"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/table_filters.js:234
 msgid "Serial number greater than or equal to"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
 msgid "Serial number LTE"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
+#: templates/js/translated/table_filters.js:152
+#: templates/js/translated/table_filters.js:238
 msgid "Serial number less than or equal to"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:147
-#: templates/js/translated/table_filters.js:148
-#: templates/js/translated/table_filters.js:221
-#: templates/js/translated/table_filters.js:222
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:243
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:401
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:179
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:184
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:209
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:214
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:234
-#: templates/js/translated/table_filters.js:235
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:252
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:253
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:262
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:280
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:303
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:333
-#: templates/js/translated/table_filters.js:344
-#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:349
-#: templates/js/translated/table_filters.js:366
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:435
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:443
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:451
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:452
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/fa/LC_MESSAGES/django.po b/InvenTree/locale/fa/LC_MESSAGES/django.po
index 0a682f771d..4511c37c75 100644
--- a/InvenTree/locale/fa/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fa/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:41\n"
 "Last-Translator: \n"
 "Language-Team: Persian\n"
 "Language: fa_IR\n"
@@ -25,196 +25,253 @@ msgstr "Address e API peida nashod"
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr ""
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr ""
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr ""
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr ""
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr ""
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr ""
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr ""
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr ""
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr ""
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr ""
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr ""
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr ""
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr ""
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr ""
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr ""
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr ""
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr ""
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr ""
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr ""
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr ""
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr ""
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr ""
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr ""
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr ""
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr ""
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr ""
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr ""
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr ""
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr ""
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr ""
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr ""
 
@@ -273,56 +330,69 @@ msgstr ""
 msgid "Must be a valid number"
 msgstr ""
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr ""
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr ""
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr ""
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr ""
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr ""
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr ""
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr ""
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr ""
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr ""
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr ""
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr ""
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr ""
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr ""
 
@@ -461,8 +531,8 @@ msgstr ""
 msgid "Returned"
 msgstr ""
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr ""
 
@@ -546,7 +616,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr ""
 
@@ -554,7 +624,7 @@ msgstr ""
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr ""
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr ""
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr ""
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr ""
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr ""
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr ""
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
@@ -646,20 +710,20 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr ""
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr ""
 msgid "Build Orders"
 msgstr ""
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr ""
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr ""
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:240
+#: build/models.py:217
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr ""
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr ""
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr ""
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr ""
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr ""
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr ""
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr ""
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr ""
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr ""
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr ""
 
@@ -1360,8 +1424,8 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr ""
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr ""
 
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1438,7 +1502,7 @@ msgstr ""
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr ""
 
@@ -1581,985 +1645,997 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr ""
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr ""
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr ""
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr ""
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr ""
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr ""
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr ""
-
 #: company/models.py:98
 msgid "Company description"
 msgstr ""
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr ""
 
@@ -2707,9 +2774,9 @@ msgstr ""
 msgid "Does this company manufacture parts?"
 msgstr ""
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr ""
 
@@ -2717,9 +2784,9 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2745,11 +2812,11 @@ msgstr ""
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr ""
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr ""
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr ""
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr ""
 
@@ -2953,14 +3020,14 @@ msgstr ""
 msgid "Download image from URL"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -2977,6 +3044,11 @@ msgstr ""
 msgid "Upload Image"
 msgstr ""
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr ""
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr ""
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr ""
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr ""
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr ""
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr ""
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr ""
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr ""
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr ""
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr ""
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr ""
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr ""
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr ""
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "تایید"
 
@@ -7542,7 +7603,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po
index 6350edffbc..21f77b532f 100644
--- a/InvenTree/locale/fr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fr/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: French\n"
 "Language: fr_FR\n"
@@ -25,196 +25,253 @@ msgstr "Point de terminaison de l'API introuvable"
 msgid "Error details can be found in the admin panel"
 msgstr "Les détails de l'erreur peuvent être trouvées dans le panneau d'administration"
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "Entrer la date"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr "Notes"
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr "La valeur '{name}' n'apparaît pas dans le format du modèle"
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr "La valeur fournie ne correspond pas au modèle requis : "
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "Entrer le mot de passe"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "Entrer le nouveau mot de passe"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Confirmez le mot de passe"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Confirmer le nouveau mot de passe"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
-msgstr ""
+msgstr "Ancien mot de passe"
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "Email (encore)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "Confirmation de l'adresse email"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "Vous devez taper le même e-mail à chaque fois."
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr "Dupliquer le numéro : {sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "Quantité fournie invalide"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "Chaîne de numéro de série vide"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr "Plage de groupe invalide : {g}"
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "Groupe invalide : {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr "Séquence de groupe invalide : {g}"
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "Invalide/aucun groupe {group}"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "Aucun numéro de série trouvé"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
-msgstr ""
+msgstr "Le nombre de numéros de série uniques ({s}) doit correspondre à la quantité ({q})"
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr "Modèle mal formaté"
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr "Clé de format spécifiée inconnue"
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr "Clé de format requise manquante"
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr "Le champ de référence ne peut pas être vide"
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr "La référence doit correspondre au modèle requis"
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr "Le numéro de référence est trop grand"
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "Fichier manquant"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "Lien externe manquant"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "Pièce jointe"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "Sélectionnez un fichier à joindre"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "Lien"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "Lien vers une url externe"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "Commentaire"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "Commentaire du fichier"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "Utilisateur"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "date de chargement"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "Le nom de fichier ne doit pas être vide"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "Répertoire de pièce jointe invalide"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "Le nom de fichier contient le caractère illégal '{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "Extension manquante du nom de fichier"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "Une pièce jointe avec ce nom de fichier existe déjà"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "Erreur lors du renommage du fichier"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "Choix invalide"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,107 +279,120 @@ msgstr "Choix invalide"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "Nom"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "Description"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "Description (facultative)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "parent"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
-msgstr ""
+msgstr "Erreur serveur"
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
-msgstr ""
+msgstr "Une erreur a été enregistrée par le serveur."
 
 #: InvenTree/serializers.py:53 part/models.py:2692
 msgid "Must be a valid number"
 msgstr "Doit être un nombre valide"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "Nom du fichier"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr "Valeur non valide"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr "Fichier de données"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr "Sélectionnez le fichier de données à envoyer"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr "Format de fichier non supporté"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "Fichier trop volumineux"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr "Pas de colonnes trouvées dans le fichier"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr "Par de lignes de données trouvées dans le fichier"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr "Pas de lignes de données fournies"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr "Pas de colonne de données fournie"
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr "Colonne requise manquante : {name}"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "Colonne duliquée : '{col}'"
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr "Tchèque"
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr "Échec des contrôles de santé du système"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "En attente"
 
@@ -461,8 +531,8 @@ msgstr "Perdu"
 msgid "Returned"
 msgstr "Retourné"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "Expédié"
 
@@ -488,7 +558,7 @@ msgstr "Rejeté"
 
 #: InvenTree/status_codes.py:185
 msgid "Quarantined"
-msgstr ""
+msgstr "En quarantaine"
 
 #: InvenTree/status_codes.py:259
 msgid "Legacy stock tracking entry"
@@ -546,7 +616,7 @@ msgstr "Séparer de l'élément parent"
 msgid "Split child item"
 msgstr "Fractionner l'élément enfant"
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr "Articles de stock fusionnés"
 
@@ -554,7 +624,7 @@ msgstr "Articles de stock fusionnés"
 msgid "Converted to variant"
 msgstr "Converti en variante"
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr "Envoyé au client"
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr "L'IPN doit correspondre au modèle de regex {pat}"
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr "La référence doit correspondre au modèle {pattern}"
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr "Caractère invalide dans le nom ({x})"
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr "La valeur de surplus ne doit pas être négative"
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr "Le surplus ne doit pas dépasser 100%"
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr "Valeur invalide pour le dépassement"
 
@@ -632,7 +696,7 @@ msgstr "Les mots de passe doivent correspondre"
 
 #: InvenTree/views.py:562
 msgid "Wrong password provided"
-msgstr ""
+msgstr "Mot de passe incorrect"
 
 #: InvenTree/views.py:751 templates/navbar.html:152
 msgid "System Information"
@@ -644,22 +708,22 @@ msgstr "À propos d'InvenTree"
 
 #: build/api.py:217
 msgid "Build must be cancelled before it can be deleted"
-msgstr ""
+msgstr "La construction doit être annulée avant de pouvoir être supprimée"
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr "Choix invalide pour la fabrication parente"
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr "Ordre de Fabrication"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr "Ordre de Fabrication"
 msgid "Build Orders"
 msgstr "Ordres de Fabrication"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr "Référence de l' Ordre de Fabrication"
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr "Référence"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr "Brève description de la fabrication"
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Fabrication parente"
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr "BuildOrder associé a cette fabrication"
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "Pièce"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr "Sélectionnez la pièce à construire"
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr "Bon de commande de référence"
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr "Commande de vente à laquelle cette construction est allouée"
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr "Emplacement d'origine"
 
-#: build/models.py:240
+#: build/models.py:217
 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:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr "Emplacement cible"
 
-#: build/models.py:249
+#: build/models.py:226
 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:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr "Quantité a fabriquer"
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr "Nombre de stock items à construire"
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr "Articles terminés"
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr "Nombre d'articles de stock qui ont été terminés"
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr "État de la construction"
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr "Code de statut de construction"
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr "Code de lot"
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr "Code de lot pour ce build output"
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr "Date de création"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr "Date d'achèvement cible"
 
-#: build/models.py:286
+#: build/models.py:263
 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:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr "Date d'achèvement"
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr "achevé par"
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr "Émis par"
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr "Utilisateur ayant émis cette commande de construction"
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr "Responsable"
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr "Utilisateur responsable de cette commande de construction"
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,366 +912,366 @@ msgstr "Utilisateur responsable de cette commande de construction"
 msgid "External Link"
 msgstr "Lien Externe"
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr "Notes de construction supplémentaires"
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
-msgstr ""
+msgstr "La commande {build} a été effectuée"
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
-msgstr ""
+msgstr "La commande a été effectuée"
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr "Pas d'ordre de production défini"
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr "L'ordre de production a déjà été réalisé"
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr "L'ordre de production de correspond pas à l'ordre de commande"
 
-#: build/models.py:1162
+#: build/models.py:1143
 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:1171
+#: build/models.py:1152
 #, 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:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr "L'article de stock est suralloué"
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr "La quantité allouée doit être supérieure à zéro"
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr "La quantité doit être de 1 pour stock sérialisé"
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr "L'article du stock sélectionné n'a pas été trouvé dans la BOM"
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr "Assemblage"
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr "Construction à laquelle allouer des pièces"
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr "Article en stock"
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr "Stock d'origine de l'article"
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "Quantité"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr "Quantité de stock à allouer à la construction"
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr "Installer dans"
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr "Stock de destination de l'article"
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr "Sortie d'assemblage"
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr "L'ordre de production ne correspond pas à l'ordre parent"
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr "La pièce en sortie ne correspond pas à la pièce de l'ordre de construction"
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr "Cet ordre de production a déjà été produit"
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr "Cet ordre de production n'est pas complètement attribué"
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr "Entrer la quantité désiré pour la fabrication"
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr "La quantité doit être supérieure à zéro"
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr "Quantité entière requise pour les pièces à suivre"
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 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:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr "Numéros de série"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr "Entrer les numéros de séries pour la fabrication"
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr "Allouer automatiquement les numéros de série"
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 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:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr "Le numéro de série suivant existe déjà"
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr "Une liste d'ordre de production doit être fourni"
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr "Emplacement"
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr "Emplacement des ordres de production achevés"
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr "État"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr "Accepter l'allocation incomplète"
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr "Compléter les sorties si le stock n'a pas été entièrement alloué"
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr "Supprimer le stock alloué"
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
-msgstr ""
+msgstr "Soustraire tout stock qui a déjà été alloué à cette construction"
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
-msgstr ""
+msgstr "Supprimer les sorties incomplètes"
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
-msgstr ""
+msgstr "Supprimer toutes les sorties de construction qui n'ont pas été complétées"
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
-msgstr ""
-
-#: build/serializers.py:471
-msgid "Accept stock items which have been overallocated to this build order"
-msgstr ""
+msgstr "Accepter la surallocation"
 
 #: build/serializers.py:481
-msgid "Some stock items have been overallocated"
-msgstr ""
+msgid "Accept stock items which have been overallocated to this build order"
+msgstr "Accepter les articles en stock qui ont été suralloués à cette commande de construction"
 
-#: build/serializers.py:486
+#: build/serializers.py:491
+msgid "Some stock items have been overallocated"
+msgstr "Certains articles en stock ont été suralloués"
+
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr "Accepter les non-alloués"
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr "Accepter les articles de stock qui n'ont pas été complètement alloués à cette ordre de production"
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr "Le stock requis n'a pas encore été totalement alloué"
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr "Accepter les incomplèts"
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr "Accepter que tous les ordres de production n'aient pas encore été achevés"
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr "La quantité nécessaire n'a pas encore été complétée"
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr "L'ordre de production a des sorties incomplètes"
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr "Aucune sortie de construction n'a été créée pour cet ordre de construction"
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
-msgstr ""
+msgstr "Article de la nomenclature"
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr "Sortie d'assemblage"
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
-msgstr ""
+msgstr "La sortie de la construction doit pointer vers la même version"
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
+msgstr "bom_item.part doit pointer sur la même pièce que l'ordre de construction"
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr "L'article doit être en stock"
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Quantité disponible ({q}) dépassée"
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
-msgstr ""
+msgstr "La sortie de construction doit être spécifiée pour l'allocation des pièces tracées"
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
-msgstr ""
+msgstr "La sortie de la compilation ne peut pas être spécifiée pour l'allocation des pièces non suivies"
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
-msgstr ""
+msgstr "Cet article de stock a déjà été alloué à cette sortie de construction"
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
-msgstr ""
+msgstr "Les éléments d'allocation doivent être fournis"
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
-msgstr ""
+msgstr "Emplacement de stock où les pièces doivent être fournies (laisser vide pour les prendre à partir de n'importe quel endroit)"
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr "Emplacements exclus"
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
-msgstr ""
+msgstr "Exclure les articles en stock de cet emplacement sélectionné"
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
-msgstr ""
+msgstr "Stock interchangeable"
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
-msgstr ""
+msgstr "Les articles en stock à plusieurs emplacements peuvent être utilisés de manière interchangeable"
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
-msgstr ""
+msgstr "Stock de substitution"
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
-msgstr ""
+msgstr "Autoriser l'allocation des pièces de remplacement"
 
 #: build/tasks.py:100
 msgid "Stock required for build order"
@@ -1215,12 +1279,12 @@ msgstr "Stock requis pour la commande de construction"
 
 #: build/tasks.py:118
 msgid "Overdue Build Order"
-msgstr ""
+msgstr "Commande en retard"
 
 #: build/tasks.py:123
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
-msgstr ""
+msgstr "La commande {bo} est maintenant en retard"
 
 #: build/templates/build/build_base.html:39
 #: order/templates/order/order_base.html:28
@@ -1284,13 +1348,13 @@ 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:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr "Date Cible"
 
@@ -1303,35 +1367,35 @@ msgstr "Cette construction était due le %(target)s"
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr "En retard"
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr "Terminé"
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr "Commandes"
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr "Émis par"
 
@@ -1360,8 +1424,8 @@ 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:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr "Destination"
 
@@ -1375,19 +1439,19 @@ msgstr "Pièces allouées"
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr "Lot"
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr "Créé le"
 
@@ -1401,13 +1465,13 @@ msgstr "Compilation incomplète"
 
 #: build/templates/build/detail.html:157 build/templates/build/sidebar.html:17
 msgid "Child Build Orders"
-msgstr ""
+msgstr "Commandes filles"
 
 #: build/templates/build/detail.html:172
 msgid "Allocate Stock to Build"
-msgstr ""
+msgstr "Allouer le stock à la commande"
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr "Désallouer le stock"
 
@@ -1417,15 +1481,15 @@ msgstr "Désallouer le stock"
 
 #: build/templates/build/detail.html:179
 msgid "Automatically allocate stock to build"
-msgstr ""
+msgstr "Affecter automatiquement le stock à construire"
 
 #: build/templates/build/detail.html:180
 msgid "Auto Allocate"
-msgstr ""
+msgstr "Allocation automatique"
 
 #: build/templates/build/detail.html:182
 msgid "Manually allocate stock to build"
-msgstr ""
+msgstr "Affecter manuellement le stock à construire"
 
 #: build/templates/build/detail.html:183 build/templates/build/sidebar.html:8
 msgid "Allocate Stock"
@@ -1438,7 +1502,7 @@ msgstr "Commander les pièces requises"
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr "Commander des pièces"
 
@@ -1460,35 +1524,35 @@ msgstr "Cet ordre de construction n'a aucun objet de BOM non suivi associé"
 
 #: build/templates/build/detail.html:229
 msgid "Incomplete Build Outputs"
-msgstr ""
+msgstr "Sorties incomplètes"
 
 #: build/templates/build/detail.html:233
 msgid "Create new build output"
-msgstr ""
+msgstr "Créer une nouvelle sortie"
 
 #: build/templates/build/detail.html:234
 msgid "New Build Output"
-msgstr ""
+msgstr "Nouvelle sortie"
 
 #: build/templates/build/detail.html:248
 msgid "Output Actions"
-msgstr ""
+msgstr "Actions de sortie"
 
 #: build/templates/build/detail.html:253
 msgid "Complete selected build outputs"
-msgstr ""
+msgstr "Compléter les sorties de construction sélectionnées"
 
 #: build/templates/build/detail.html:254
 msgid "Complete outputs"
-msgstr ""
+msgstr "Sortie complète"
 
 #: build/templates/build/detail.html:258
 msgid "Delete selected build outputs"
-msgstr ""
+msgstr "Supprimer les sorties de construction sélectionnées"
 
 #: build/templates/build/detail.html:259
 msgid "Delete outputs"
-msgstr ""
+msgstr "Supprimer les sorties"
 
 #: build/templates/build/detail.html:267
 #: stock/templates/stock/location.html:197 templates/stock_table.html:27
@@ -1498,11 +1562,11 @@ msgstr "Actions d'impression"
 #: build/templates/build/detail.html:271 build/templates/build/detail.html:272
 #: stock/templates/stock/location.html:201 templates/stock_table.html:31
 msgid "Print labels"
-msgstr ""
+msgstr "Imprimer les étiquettes"
 
 #: build/templates/build/detail.html:294
 msgid "Completed Build Outputs"
-msgstr ""
+msgstr "Sorties de Construction terminées"
 
 #: build/templates/build/detail.html:306 build/templates/build/sidebar.html:19
 #: company/templates/company/manufacturer_part.html:151
@@ -1526,7 +1590,7 @@ msgstr "Allocation terminée"
 
 #: build/templates/build/detail.html:503
 msgid "All untracked stock items have been allocated"
-msgstr ""
+msgstr "Tous les articles de stock non suivis ont été alloués"
 
 #: build/templates/build/index.html:18 part/templates/part/detail.html:313
 msgid "New Build Order"
@@ -1538,11 +1602,11 @@ msgstr "Imprimer les commandes de construction"
 
 #: build/templates/build/sidebar.html:5
 msgid "Build Order Details"
-msgstr ""
+msgstr "Détails de la commande de construction"
 
 #: build/templates/build/sidebar.html:15
 msgid "Completed Outputs"
-msgstr ""
+msgstr "Sorties de Construction terminées"
 
 #: common/files.py:62
 msgid "Unsupported file format: {ext.upper()}"
@@ -1581,985 +1645,997 @@ msgstr "{name.title()} Fichier"
 msgid "Select {name} file to upload"
 msgstr "Sélectionner le fichier {name} à uploader"
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
-msgstr ""
+msgstr "Clé du paramètre (doit être unique - insensible à la casse)"
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr "Valeur du paramètre"
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr "La valeur choisie n'est pas une option valide"
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr "La valeur doit être une valeur booléenne"
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr "La valeur doit être un nombre entier"
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr "La chaîne de caractères constituant la clé doit être unique"
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr "Pas de groupe"
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr "Redémarrage nécessaire"
 
-#: common/models.py:798
+#: common/models.py:805
 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:805
+#: common/models.py:812
 msgid "Server Instance Name"
-msgstr ""
+msgstr "Nom de l'instance du serveur"
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr "Chaîne de caractères descriptive pour l'instance serveur"
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr "Utiliser le nom de l'instance"
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr "Utiliser le nom de l’instance dans la barre de titre"
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
-msgstr ""
+msgstr "Limiter l'affichage de `about`"
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
-msgstr ""
+msgstr "Afficher la modale `about` uniquement aux super-utilisateurs"
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr "Nom de la société"
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr "Nom de société interne"
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr "URL de base"
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr "URL de base pour l'instance serveur"
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr "Devise par défaut"
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr "Devises par défaut"
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr "Télécharger depuis l'URL"
 
-#: common/models.py:848
+#: common/models.py:855
 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:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr "Support des code-barres"
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr "Activer le support du scanner de code-barres"
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:868
+#: common/models.py:873
+msgid "Require confirm"
+msgstr "Confirmation requise"
+
+#: common/models.py:874
+msgid "Require explicit user confirmation for certain action."
+msgstr "Exiger une confirmation explicite de l’utilisateur pour certaines actions."
+
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
+msgstr "Support des code-barres"
+
+#: common/models.py:881
+msgid "Enable barcode scanner support"
+msgstr "Activer le support du scanner de code-barres"
+
+#: common/models.py:887
+msgid "Barcode Webcam Support"
+msgstr "Prise en charge de la webcam code-barres"
+
+#: common/models.py:888
+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:894
 msgid "IPN Regex"
 msgstr "Regex IPN"
 
-#: common/models.py:869
+#: common/models.py:895
 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:873
+#: common/models.py:899
 msgid "Allow Duplicate IPN"
 msgstr "Autoriser les IPN dupliqués"
 
-#: common/models.py:874
+#: common/models.py:900
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Permettre à plusieurs pièces de partager le même IPN"
 
-#: common/models.py:880
+#: common/models.py:906
 msgid "Allow Editing IPN"
 msgstr "Autoriser l'édition de l'IPN"
 
-#: common/models.py:881
+#: common/models.py:907
 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:887
+#: common/models.py:913
 msgid "Copy Part BOM Data"
-msgstr ""
+msgstr "Copier les données de la pièce"
 
-#: common/models.py:888
+#: common/models.py:914
 msgid "Copy BOM data by default when duplicating a part"
-msgstr ""
+msgstr "Copier les données des paramètres par défaut lors de la duplication d'une pièce"
 
-#: common/models.py:894
+#: common/models.py:920
 msgid "Copy Part Parameter Data"
 msgstr "Copier les données des paramètres de la pièce"
 
-#: common/models.py:895
+#: common/models.py:921
 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:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr "Copier les données de test de la pièce"
 
-#: common/models.py:902
+#: common/models.py:928
 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:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr "Copier les templates de paramètres de catégorie"
 
-#: common/models.py:909
+#: common/models.py:935
 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:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
-msgstr ""
+msgstr "Modèle"
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr "Les pièces sont des templates par défaut"
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
-msgstr ""
+msgstr "Assemblage"
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr "Les composantes peuvent être assemblées à partir d'autres composants par défaut"
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr "Composant"
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr "Les composantes peuvent être utilisées comme sous-composants par défaut"
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr "Achetable"
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr "Les pièces sont achetables par défaut"
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr "Vendable"
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr "Les pièces sont vendables par défaut"
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr "Traçable"
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr "Les pièces sont traçables par défaut"
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr "Virtuelle"
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr "Les pièces sont virtuelles par défaut"
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr "Afficher l'import dans les vues"
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr "Afficher l'assistant d'importation pour certaine vues de produits"
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr "Afficher le prix dans les formulaires"
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr "Afficher le prix de la pièce dans certains formulaires"
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr "Afficher le prix dans la BOM"
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr "Inclure les informations de prix dans les tableaux de la BOM"
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr "Historique des prix"
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
-msgstr ""
+msgstr "Afficher l'historique des prix pour la pièce"
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr "Afficher les pièces connexes"
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr "Afficher les pièces connexes à une pièce"
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr "Créer un stock initial"
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr "Créer le stock initial lors de la création d'une pièce"
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr "Prix internes"
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr "Activer les prix internes pour les pièces"
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
-msgstr ""
+msgstr "Prix interne comme prix nomenclature"
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
-msgstr ""
-
-#: common/models.py:1030
-msgid "Part Name Display Format"
-msgstr ""
-
-#: common/models.py:1031
-msgid "Format to display the part name"
-msgstr ""
-
-#: common/models.py:1038
-msgid "Enable label printing"
-msgstr ""
-
-#: common/models.py:1039
-msgid "Enable label printing from the web interface"
-msgstr ""
-
-#: common/models.py:1045
-msgid "Label Image DPI"
-msgstr ""
-
-#: common/models.py:1046
-msgid "DPI resolution when generating image files to supply to label printing plugins"
-msgstr ""
-
-#: common/models.py:1055
-msgid "Enable Reports"
-msgstr ""
+msgstr "Utiliser le prix interne (si définie) dans le calcul du prix nomenclature"
 
 #: common/models.py:1056
+msgid "Part Name Display Format"
+msgstr "Format d'affichage du nom de la pièce"
+
+#: common/models.py:1057
+msgid "Format to display the part name"
+msgstr "Format pour afficher le nom de la pièce"
+
+#: common/models.py:1064
+msgid "Enable label printing"
+msgstr "Activer l'impression d'étiquettes"
+
+#: common/models.py:1065
+msgid "Enable label printing from the web interface"
+msgstr "Activer l'impression d'étiquettes depuis l'interface Web"
+
+#: common/models.py:1071
+msgid "Label Image DPI"
+msgstr "Étiquette image DPI"
+
+#: common/models.py:1072
+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:1081
+msgid "Enable Reports"
+msgstr "Activer les rapports"
+
+#: common/models.py:1082
 msgid "Enable generation of reports"
-msgstr ""
+msgstr "Activer la génération de rapports"
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
-msgstr ""
+msgstr "Mode Débogage"
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
-msgstr ""
+msgstr "Générer des rapports en mode debug (sortie HTML)"
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr "Taille de la page"
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
-msgstr ""
+msgstr "Taille de page par défaut pour les rapports PDF"
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1081
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1087
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1088
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1094
-msgid "Batch Code Template"
-msgstr ""
-
-#: common/models.py:1095
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:1100
-msgid "Stock Expiry"
-msgstr ""
-
-#: common/models.py:1101
-msgid "Enable stock expiry functionality"
-msgstr ""
+msgstr "Activer les rapports de test"
 
 #: common/models.py:1107
-msgid "Sell Expired Stock"
-msgstr ""
+msgid "Enable generation of test reports"
+msgstr "Activer la génération de rapports de test"
 
-#: common/models.py:1108
-msgid "Allow sale of expired stock"
-msgstr ""
+#: common/models.py:1113
+msgid "Attach Test Reports"
+msgstr "Joindre des rapports de test"
 
 #: common/models.py:1114
+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:1120
+msgid "Batch Code Template"
+msgstr "Modèle de code de lot"
+
+#: common/models.py:1121
+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:1126
+msgid "Stock Expiry"
+msgstr "Expiration du stock"
+
+#: common/models.py:1127
+msgid "Enable stock expiry functionality"
+msgstr "Activer la fonctionnalité d'expiration du stock"
+
+#: common/models.py:1133
+msgid "Sell Expired Stock"
+msgstr "Vendre le stock expiré"
+
+#: common/models.py:1134
+msgid "Allow sale of expired stock"
+msgstr "Autoriser la vente de stock expiré"
+
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr "jours"
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr "Valeur préfixe référence commande client"
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
-msgstr "Préfixe des commandes d'achats"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
+msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
-msgstr "Valeur préfixe référence bon de commande"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
+msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr "Activer les mots de passe oubliés"
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr "Activer les inscriptions"
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr "Activer le SSO"
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr "Activer le SSO sur les pages de connexion"
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr "Email requis"
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr "Saisie automatique des utilisateurs SSO"
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr "Courriel en double"
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr "Activer l'intégration de plugins"
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr "Activer l'intégration de plugin pour ajouter des apps"
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Clé du paramètre (doit être unique - insensible à la casse)"
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr "Afficher les dernières pièces"
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr "Afficher les dernières modifications du stock"
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
-msgstr ""
+msgstr "Afficher le stock épuisé"
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
-msgstr ""
+msgstr "Afficher les stocks épuisés sur la page d'accueil"
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
-msgstr ""
+msgstr "Afficher le stock nécessaire"
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr "Format préféré pour l'affichage des dates"
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr "Prix"
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr "Actif"
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr ""
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr "Composantes importées"
 msgid "Previous Step"
 msgstr "Étape précédente"
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr "URL de l'image"
-
 #: company/models.py:98
 msgid "Company description"
 msgstr ""
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr ""
 
@@ -2707,9 +2774,9 @@ msgstr "est fabricant"
 msgid "Does this company manufacture parts?"
 msgstr "Cette entreprise fabrique-t-elle des pièces?"
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr "Devise"
 
@@ -2717,9 +2784,9 @@ msgstr "Devise"
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr "Fabricant"
 
@@ -2745,11 +2812,11 @@ msgstr "Sélectionner un fabricant"
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr "Valeur"
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr "Fournisseur"
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr ""
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr "Commande multiple"
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr "Disponible"
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr ""
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr "Créer une commande d'achat"
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr ""
 
@@ -2953,14 +3020,14 @@ msgstr "Ajouter une nouvelle image"
 msgid "Download image from URL"
 msgstr "Télécharger l'image depuis l'URL"
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -2977,6 +3044,11 @@ msgstr ""
 msgid "Upload Image"
 msgstr ""
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr ""
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr "Nouvelle commande de vente"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr "Stock affecté"
 
@@ -3082,7 +3154,7 @@ msgstr "Stock affecté"
 msgid "Supplier List"
 msgstr "Liste des Fournisseurs"
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr "Supprimer les pièces du fournisseur"
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr "Supprimer"
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr "Tarif"
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr "Éléments en stock"
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr "Nouveau Fournisseur"
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr "Nouveau Fabricant"
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr "Clients"
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr "Nouveaux Clients"
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr "Entreprises"
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr "Nouvelle Entreprise"
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr ""
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr "Filtres"
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr "Description de la commande"
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr "Lien vers une page externe"
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr "Créé par"
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr "Notes de commande"
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr "Nom de l’expédition"
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr "expédié par"
 
-#: order/models.py:737
+#: order/models.py:714
 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:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr "Seule une commande en attente peut être marquée comme terminée"
 
-#: order/models.py:744
+#: order/models.py:721
 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:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr "Nombre d'élement"
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr "Contexte"
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr "Commande"
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr "Commande d’achat"
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr "Pièce fournisseur"
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr "Reçu"
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr "Nombre d'éléments reçus"
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr "Prix d'achat"
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr "Prix de vente"
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr "Ligne"
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr "Envoi"
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr "Ligne"
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr "Article"
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr "Devise *"
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr "La commande ne peut pas être annulée"
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr "La commande n'est pas ouverte"
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr "Devise du prix d'achat"
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 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:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr "Champ d'identifiant unique"
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr "Le code-barres est déjà utilisé"
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 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:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr "Entrez les numéros de série à allouer"
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 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:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr "Les numéros de série suivants sont déjà alloués"
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr "Incomplet"
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr "Articles de la commande d'achat"
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr "Notes de commande"
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr "Expéditions en attente"
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr "En Commande"
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr "Requis"
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr "Devise d'achat de l'item"
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr "Composantes (incluant sous-catégories)"
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr "Composant créé avec succès"
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr "Calculer"
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr "Afficher le prix de vente"
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr "Aucun"
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr "Extrait "
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr "Elément"
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr "Requis pour"
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr "Numéro de série"
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr "Résultat"
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr "Propriétaire"
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr "Sélectionner un propriétaire"
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr "Il existe déjà un article en stock avec ce numéro de série"
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr "La quantité doit être de 1 pour un article avec un numéro de série"
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr "Le numéro de série ne peut pas être défini si la quantité est supérieure à 1"
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr "Entrez le nombre d'articles en stock à sérialiser"
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr "Entrez les numéros de série pour les nouveaux articles"
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr "Les numéros de série ne peuvent pas être assignés à cette pièce"
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr "Les numéros de série existent déjà"
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "Confirmer"
 
@@ -7542,7 +7603,7 @@ msgstr "Ajouter une pièce jointe"
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr "Quantité requise"
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr "Doit être une URL d'image valide"
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr "Le serveur distant doit être accessible"
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr "L'image distante ne doit pas excéder la taille maximale autorisée de fichier"
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr "Aucune réponse"
@@ -7694,23 +7739,23 @@ msgstr "Code d’erreur"
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr "Aucune pièce jointe trouvée"
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr "Modifier la pièce jointe"
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr "Date d'upload"
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr "Modifier la pièce jointe"
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr "Supprimer la pièce jointe"
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr "Données de la rangée"
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,22 +7878,22 @@ msgid "Download BOM Template"
 msgstr "Télécharger le template de la BOM"
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr "Sélectionner un format de fichier"
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
-msgstr "En cascade"
+msgid "Multi Level BOM"
+msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
-msgstr "Télécharger la BOM en cascade / à plusieurs niveaux"
+msgid "Include BOM data for subassemblies"
+msgstr ""
 
 #: templates/js/translated/bom.js:301
 msgid "Levels"
@@ -7858,422 +7903,426 @@ msgstr "Niveaux"
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr "Sélectionner le nombre maximum de niveaux de BOM à exporter (0 = tous les niveaux)"
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr "Inclure les données de paramètre"
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr "Inclure les données de paramètre de la pièce dans la BOM exporté"
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr "Inclure les données de stock"
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr "Êtes-vous sûr de vouloir annuler cette construction?"
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr "Prochain numéro de série disponible"
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr "Dernier numéro de série"
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr "La BOM contient des pièces traçables"
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr "Les pièces traçables peuvent avoir des numéros de série spécifiés"
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr "Commander des stocks"
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr "Pas d'informations sur l'utilisateur"
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr "Composantes fournies"
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr "Composantes fabriquées"
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr "ID de commande"
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr "Référence de commande"
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr "Commandé"
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr "Commande en retard"
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr "Livré au client"
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr "Allouer des numéros de série"
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr "Acheter du stock"
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr "Calculer le prix"
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr "Allouer des numéros de série"
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr "Stock bas"
 
@@ -9243,11 +9292,11 @@ msgstr "Pièce vendable"
 msgid "No variants found"
 msgstr "Aucune variante trouvée"
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr "Aucune catégorie"
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr "Afficher sous forme de liste"
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr "Afficher sous forme d'arborescence"
 
@@ -9296,7 +9345,7 @@ msgstr "Afficher sous forme d'arborescence"
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr "Chemin d'accès"
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr "L'article de stock est détruit"
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr "Epuisé"
 
@@ -9727,95 +9776,95 @@ msgstr "Epuisé"
 msgid "Stocktake"
 msgstr "Prise d'inventaire"
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr "Pièce de fournisseur non précisée"
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr "Aucun article de stock ne correspond à la requête"
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr "Définir l'état du stock"
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr "Sélectionner le code de statut"
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr "Le code de statut doit être sélectionné"
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr "Détails"
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr "L'emplacement n'existe plus"
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr "La commande d'achat n'existe plus"
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr "Le client n'existe plus"
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr "L'article de stock n'existe plus"
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr "Ajouté"
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr "Supprimé"
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr "Validée"
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr "Inclure les sous-emplacements"
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr "Inclure les emplacements"
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr "Inclure les sous-catégories"
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
+#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:226
 msgid "Is Serialized"
 msgstr "A un numéro de série"
 
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:147
+#: templates/js/translated/table_filters.js:233
 msgid "Serial number GTE"
 msgstr "Numéro de série PGE"
 
-#: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
+#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/table_filters.js:234
 msgid "Serial number greater than or equal to"
 msgstr "Numéro de série supérieur ou égal à"
 
-#: templates/js/translated/table_filters.js:147
-#: templates/js/translated/table_filters.js:233
+#: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
 msgid "Serial number LTE"
 msgstr "Numéro de série PPE"
 
-#: templates/js/translated/table_filters.js:148
-#: templates/js/translated/table_filters.js:234
+#: templates/js/translated/table_filters.js:152
+#: templates/js/translated/table_filters.js:238
 msgid "Serial number less than or equal to"
 msgstr "Numéro de série inférieur ou égal à"
 
-#: templates/js/translated/table_filters.js:151
-#: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr "Numéro de série"
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr "Code de lot"
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr "Pièces actives"
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr "Afficher le stock pour les pièces actives"
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr "La pièce est un assemblage"
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr "Est alloué"
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr "L'élément a été alloué"
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr "Le stock est disponible pour utilisation"
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr "Afficher les articles de stock qui sont installés dans un autre article"
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr "Afficher les articles qui ont été assignés à un client"
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr "État du stock"
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr "A un prix d'achat"
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr "Afficher les articles de stock qui ont un prix d'achat défini"
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr "Afficher les articles de stock qui ont expiré"
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr "Afficher le stock qui est proche de l'expiration"
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr "État de la construction"
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr "Assigné à moi"
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr "État de la commande"
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr "En suspens"
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr "Inclure les pièces des sous-catégories"
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr "Afficher les pièces actives"
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr "A un IPN"
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr "La pièce a un numéro de pièce interne"
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr "Achetable"
 
diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po
index 2612db141f..3adb73b567 100644
--- a/InvenTree/locale/he/LC_MESSAGES/django.po
+++ b/InvenTree/locale/he/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Hebrew\n"
 "Language: he_IL\n"
@@ -25,196 +25,253 @@ msgstr ""
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "הזן תאריך סיום"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr ""
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "הכנס סיסמה"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "הכנס סיסמה חדשה"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "אישור סיסמה"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "אשר סיסמה חדשה"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr ""
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "אימייל (שנית)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "אישור כתובת אימייל"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "חובה לרשום את אותו אימייל בכל פעם."
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr ""
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "קבוצה שגויה: {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "קבוצה שגויה / לא נמצאה {group}"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "מספרים סידוריים לא נמצאו"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "קובץ חסר"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "חסר קישור חיצוני"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "קובץ מצורף"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "בחר קובץ לצירוף"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "קישור"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "קישור חיצוני"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "הערה"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "הערת קובץ"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "משתמש"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "תאריך העלאה"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "חובה למלא שם קובץ"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "תיקיית קובץ שגויה"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "שם הקובץ מכיל תו '{c}' שאינו חוקי"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr ""
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr ""
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "שגיאה בשינוי שם פריט"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "בחירה שגויה"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr "בחירה שגויה"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "שם"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "תיאור"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "תיאור (לא חובה)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "מקור"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr ""
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr ""
 
@@ -273,56 +330,69 @@ msgstr ""
 msgid "Must be a valid number"
 msgstr "המספר חייב להיות תקין"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "שם קובץ"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr ""
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr ""
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr ""
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr ""
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr ""
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr ""
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr ""
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr ""
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr ""
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr ""
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr ""
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "בהמתנה"
 
@@ -461,8 +531,8 @@ msgstr "אבד"
 msgid "Returned"
 msgstr "הוחזר"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "נשלח"
 
@@ -546,7 +616,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr ""
 
@@ -554,7 +624,7 @@ msgstr ""
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr "נשלח ללקוח"
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr ""
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr ""
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr ""
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr ""
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr ""
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
@@ -646,20 +710,20 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr ""
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr ""
 msgid "Build Orders"
 msgstr ""
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr "מקט"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr "תיאור קצר אודות הבנייה"
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "מקור הבנייה"
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "רכיב"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr "בחר רכיב לבנייה"
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:240
+#: build/models.py:217
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr "כמות בניה"
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr ""
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "כמות"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr ""
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr ""
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr "מספרים סידוריים"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr ""
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr ""
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr ""
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr ""
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr ""
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr ""
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr ""
 
@@ -1360,8 +1424,8 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr ""
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr ""
 
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1438,7 +1502,7 @@ msgstr ""
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr ""
 
@@ -1581,985 +1645,997 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr ""
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr ""
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr ""
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr ""
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr ""
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr ""
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr ""
-
 #: company/models.py:98
 msgid "Company description"
 msgstr ""
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr ""
 
@@ -2707,9 +2774,9 @@ msgstr ""
 msgid "Does this company manufacture parts?"
 msgstr ""
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr ""
 
@@ -2717,9 +2784,9 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2745,11 +2812,11 @@ msgstr ""
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr ""
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr ""
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr ""
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr ""
 
@@ -2953,14 +3020,14 @@ msgstr ""
 msgid "Download image from URL"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -2977,6 +3044,11 @@ msgstr ""
 msgid "Upload Image"
 msgstr ""
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr ""
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr ""
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr ""
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr ""
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr ""
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr ""
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr ""
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr ""
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr ""
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr ""
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr ""
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr ""
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr ""
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "אשר"
 
@@ -7542,7 +7603,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.po b/InvenTree/locale/hu/LC_MESSAGES/django.po
index 97a26397de..fd8a47c34a 100644
--- a/InvenTree/locale/hu/LC_MESSAGES/django.po
+++ b/InvenTree/locale/hu/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Hungarian\n"
 "Language: hu_HU\n"
@@ -25,196 +25,253 @@ msgstr "API funkciót nem találom"
 msgid "Error details can be found in the admin panel"
 msgstr "A hiba részleteit megtalálod az admin panelen"
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "Dátum megadása"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr "Megjegyzések"
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "Jelszó megadása"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "Új jelszó megadása"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Jelszó megerősítése"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Új jelszó megerősítése"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
-msgstr ""
+msgstr "Régi jelszó"
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "Email (újra)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "Email cím megerősítés"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "Mindig ugyanazt az email címet kell beírni."
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
-msgstr "Token"
-
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
+msgstr ""
+
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr "A megadott URL nem egy érvényes kép fájl"
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr "Duplikált sorozatszám: {sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "Nem megfelelő mennyiség"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "Üres sorozatszám"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr "Érvénytelen csoport tartomány: {g}"
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "Érvénytelen csoport: {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr "Érvénytelen csoport szekvencia: {g}"
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "Érvénytelen vagy nemlétező csoport {group}"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "Nem található sorozatszám"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr "A megadott számú egyedi sorozatszám ({s}) meg kell egyezzen a darabszámmal ({q})"
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "Hiányzó fájl"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "Hiányzó külső link"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "Melléklet"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "Válaszd ki a mellekelni kívánt fájlt"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "Link"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "Link külső URL-re"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "Megjegyzés"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "Leírás, bővebb infó"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "Felhasználó"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "feltöltés dátuma"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "A fájlnév nem lehet üres"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "Érvénytelen melléklet mappa"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "Fájlnévben érvénytelen karakter van '{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "Fájlnév kiterjesztése hiányzik"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "Ilyen fájlnévvel már létezik melléklet"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "Hiba a fájl átnevezésekor"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "Érvénytelen választás"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr "Érvénytelen választás"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "Név"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "Leírás"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "Leírás (opcionális)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "szülő"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr "Kiszolgálóhiba"
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr "A kiszolgáló egy hibaüzenetet rögzített."
 
@@ -273,56 +330,69 @@ msgstr "A kiszolgáló egy hibaüzenetet rögzített."
 msgid "Must be a valid number"
 msgstr "Érvényes számnak kell lennie"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "Fájlnév"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr "Érvénytelen érték"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr "Adat fájl"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr "Fájl kiválasztása feltöltéshez"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr "Nem támogatott fájltípus"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "Fájl túl nagy"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr "Nem találhatók oszlopok a fájlban"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr "Nincsenek adatsorok a fájlban"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr "Nincs adatsor megadva"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr "Nincs adat oszlop megadva"
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr "Szükséges oszlop hiányzik: '{name}'"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "Duplikált oszlop: '{col}'"
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr "URL"
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr "Cseh"
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr "InvenTree rendszer állapotának ellenőrzése sikertelen"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "Függőben"
 
@@ -461,8 +531,8 @@ msgstr "Elveszett"
 msgid "Returned"
 msgstr "Visszaküldve"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "Kiszállítva"
 
@@ -546,7 +616,7 @@ msgstr "Szülő tételből szétválasztva"
 msgid "Split child item"
 msgstr "Szétválasztott gyermek tétel"
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr "Összevont készlet tétel"
 
@@ -554,7 +624,7 @@ msgstr "Összevont készlet tétel"
 msgid "Converted to variant"
 msgstr "Alkatrészváltozattá alakítva"
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr "Vevőnek elküldve"
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr "IPN mezőnek egyeznie kell a '{pat}' mintával"
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr "Referenciának egyeznie kell a '{pattern}' mintával"
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr "Érvénytelen karakter ({x}) a névben"
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr "Túlszállítás nem lehet negatív"
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr "Túlszállítás nem lehet több mint 100%"
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr "Érvénytelen érték a túlszállításra"
 
@@ -632,7 +696,7 @@ msgstr "A jelszavaknak egyeznie kell"
 
 #: InvenTree/views.py:562
 msgid "Wrong password provided"
-msgstr ""
+msgstr "Rossz jelszó lett megadva"
 
 #: InvenTree/views.py:751 templates/navbar.html:152
 msgid "System Information"
@@ -646,20 +710,20 @@ 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/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr "Hibás választás a szülő gyártásra"
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr "Gyártási utasítás"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr "Gyártási utasítás"
 msgid "Build Orders"
 msgstr "Gyártási utasítások"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr "Gyártási utasítás azonosító"
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr "Azonosító"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr "Gyártás rövid leírása"
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Szülő gyártás"
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve"
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "Alkatrész"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr "Válassz alkatrészt a gyártáshoz"
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr "Vevői rendelés azonosító"
 
-#: build/models.py:231
+#: build/models.py:208
 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:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr "Forrás hely"
 
-#: build/models.py:240
+#: build/models.py:217
 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:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr "Cél hely"
 
-#: build/models.py:249
+#: build/models.py:226
 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:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr "Gyártási mennyiség"
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr "Gyártandó készlet tételek száma"
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr "Kész tételek"
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr "Elkészült készlet tételek száma"
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr "Gyártási állapot"
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr "Gyártás státusz kód"
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr "Batch kód"
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr "Batch kód a gyártás kimenetéhez"
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr "Létrehozás dátuma"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr "Befejezés cél dátuma"
 
-#: build/models.py:286
+#: build/models.py:263
 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:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr "Elkészítés dátuma"
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr "elkészítette"
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr "Kiállította"
 
-#: build/models.py:304
+#: build/models.py:281
 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:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr "Felelős"
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr "Felhasználó aki felelős ezért a gyártási utasításért"
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,365 +912,365 @@ msgstr "Felhasználó aki felelős ezért a gyártási utasításért"
 msgid "External Link"
 msgstr "Külső link"
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr "Extra gyártási megjegyzések"
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
-msgstr ""
+msgstr "A {build} gyártási utasítás elkészült"
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
-msgstr ""
+msgstr "Gyártási utasítás elkészült"
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr "Nincs gyártási kimenet megadva"
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr "Gyártási kimenet már kész"
 
-#: build/models.py:754
+#: build/models.py:731
 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:1162
+#: build/models.py:1143
 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:1171
+#: build/models.py:1152
 #, 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:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr "Készlet túlfoglalva"
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr "Lefoglalt mennyiségnek nullánál többnek kell lennie"
 
-#: build/models.py:1193
+#: build/models.py:1174
 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:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr "Kiválasztott készlet tétel nem található az alkatrészjegyzékben"
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr "Gyártás"
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr "Gyártás amihez készletet foglaljunk"
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr "Készlet tétel"
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr "Forrás készlet tétel"
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "Mennyiség"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr "Készlet mennyiség amit foglaljunk a gyártáshoz"
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr "Beépítés ebbe"
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr "Cél készlet tétel"
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr "Gyártás kimenet"
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr "Gyártási kimenet nem egyezik a szülő gyártással"
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr "Kimeneti alkatrész nem egyezik a gyártási utasításban lévő alkatrésszel"
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr "Ez a gyártási kimenet már elkészült"
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr "Ez a gyártási kimenet nincs teljesen lefoglalva"
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr "Add meg a mennyiséget a gyártás kimenetéhez"
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr "Mennyiségnek nullánál többnek kell lennie"
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr "Egész számú mennyiség szükséges az egyedi követésre kötelezett alkatrészeknél"
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 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:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr "Sorozatszámok"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr "Add meg a sorozatszámokat a gyártás kimenetéhez"
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr "Sorozatszámok automatikus hozzárendelése"
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 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:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr "A következő sorozatszámok már léteznek"
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr "A gyártási kimenetek listáját meg kell adni"
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr "Hely"
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr "A kész gyártási kimenetek helye"
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr "Állapot"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr "Hiányos foglalás elfogadása"
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr "Kimenetek befejezése akkor is ha a készlet nem\n"
 "lett teljesen lefoglalva"
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr "Lefoglalt készlet levonása"
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr "Az összes lefoglalt tétel levonása a készletről"
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr "Befejezetlen kimenetek törlése"
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr "A nem befejezett gyártási kimenetek törlése"
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
-msgstr ""
-
-#: build/serializers.py:471
-msgid "Accept stock items which have been overallocated to this build order"
-msgstr ""
+msgstr "Túlfoglaltak elfogadása"
 
 #: build/serializers.py:481
-msgid "Some stock items have been overallocated"
-msgstr ""
+msgid "Accept stock items which have been overallocated to this build order"
+msgstr "Túlfoglalt készlet tételek elfogadása ehhez a gyártáshoz"
 
-#: build/serializers.py:486
+#: build/serializers.py:491
+msgid "Some stock items have been overallocated"
+msgstr "Pár készlet tétel túl lett foglalva"
+
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr "Kiosztatlanok elfogadása"
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr "Fogadd el hogy a készlet tételek nincsenek teljesen lefoglalva ehhez a gyártási utastáshoz"
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr "A szükséges készlet nem lett teljesen lefoglalva"
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr "Befejezetlenek elfogadása"
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr "Fogadd el hogy a szükséges számú gyártási kimenet nem lett elérve"
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr "Szükséges gyártási mennyiség nem lett elérve"
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr "A gyártási utasítás befejezetlen kimeneteket tartalmaz"
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr "Ehhez a gyártási utasításhoz nem készült kimenet"
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr "Alkatrészjegyzék tétel"
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr "Gyártás kimenet"
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr "A gyártási kimenetnek ugyanarra a gyártásra kell mutatnia"
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr "bom_item.part ugyanarra az alkatrészre kell mutasson mint a gyártási utasítás"
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr "A tételnek kell legyen készlete"
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Rendelkezésre álló mennyiség ({q}) túllépve"
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr "Gyártási kimenetet meg kell adni a követésre kötelezett alkatrészek lefoglalásához"
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 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:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr "Ez a készlet tétel már le lett foglalva ehhez a gyártási kimenethez"
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr "A lefoglalandó tételeket meg kell adni"
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr "Készlet hely ahonnan az alkatrészek származnak (hagyd üresen ha bárhonnan)"
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr "Hely kizárása"
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr "Készlet tételek kizárása erről a kiválasztott helyről"
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr "Felcserélhető készlet"
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr "A különböző helyeken lévő készlet egyenrangúan felhasználható"
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr "Készlet helyettesítés"
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr "Helyettesítő alkatrészek foglalásának engedélyezése"
 
@@ -1285,13 +1349,13 @@ 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:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr "Cél dátum"
 
@@ -1304,35 +1368,35 @@ msgstr "Ez a gyártás %(target)s-n volt esedékes"
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr "Késésben"
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr "Kész"
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr "Vevői rendelés"
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr "Kiállította"
 
@@ -1361,8 +1425,8 @@ 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:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr "Cél"
 
@@ -1376,19 +1440,19 @@ msgstr "Lefoglalt alkatrészek"
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr "Batch"
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr "Létrehozva"
 
@@ -1408,7 +1472,7 @@ msgstr "Alárendelt gyártások"
 msgid "Allocate Stock to Build"
 msgstr "Készlet foglalása gyártáshoz"
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr "Készlet felszabadítása"
 
@@ -1439,7 +1503,7 @@ msgstr "Szükséges alkatrészek rendelése"
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr "Alkatrész rendelés"
 
@@ -1582,985 +1646,997 @@ msgstr "{name.title()} Fájl"
 msgid "Select {name} file to upload"
 msgstr "{name} fájl kiválasztása feltöltéshez"
 
-#: common/models.py:444
+#: common/models.py:451
 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:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr "Beállítás értéke"
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr "A kiválasztott érték nem egy érvényes lehetőség"
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr "Az érték bináris kell legyen"
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr "Az érték egész szám kell legyen"
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr "Kulcs string egyedi kell legyen"
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr "Nincs csoport"
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr "Újraindítás szükséges"
 
-#: common/models.py:798
+#: common/models.py:805
 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:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr "Kiszolgáló példány neve"
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr "String leíró a kiszolgáló példányhoz"
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr "Példány név használata"
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr "Példány név használata a címsorban"
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr "Verzió infók megjelenítésének tiltása"
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr "Verzió infók megjelenítése csak admin felhasználóknak"
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr "Cég neve"
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr "Belső cégnév"
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr "Kiindulási URL"
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr "Kiindulási URL a kiszolgáló példányhoz"
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr "Alapértelmezett pénznem"
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr "Alapértelmezett pénznem"
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr "Letöltés URL-ről"
 
-#: common/models.py:848
+#: common/models.py:855
 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:854 templates/InvenTree/settings/sidebar.html:33
+#: common/models.py:861
+msgid "Download Size Limit"
+msgstr ""
+
+#: common/models.py:862
+msgid "Maximum allowable download size for remote image"
+msgstr ""
+
+#: common/models.py:873
+msgid "Require confirm"
+msgstr "Megerősítés igénylése"
+
+#: common/models.py:874
+msgid "Require explicit user confirmation for certain action."
+msgstr "Kérjen felhasználói megerősítést bizonyos műveletekhez"
+
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
 msgid "Barcode Support"
 msgstr "Vonalkód támogatás"
 
-#: common/models.py:855
+#: common/models.py:881
 msgid "Enable barcode scanner support"
 msgstr "Vonalkód olvasó engedélyezése"
 
-#: common/models.py:861
+#: common/models.py:887
 msgid "Barcode Webcam Support"
 msgstr "Webkamerás vonalkód olvasás"
 
-#: common/models.py:862
+#: common/models.py:888
 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:868
+#: common/models.py:894
 msgid "IPN Regex"
 msgstr "IPN reguláris kifejezés"
 
-#: common/models.py:869
+#: common/models.py:895
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Reguláris kifejezés ami illeszkedik az alkatrész IPN-re"
 
-#: common/models.py:873
+#: common/models.py:899
 msgid "Allow Duplicate IPN"
 msgstr "Többször is előforduló IPN engedélyezése"
 
-#: common/models.py:874
+#: common/models.py:900
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Azonos IPN használható legyen több alkatrész esetén is"
 
-#: common/models.py:880
+#: common/models.py:906
 msgid "Allow Editing IPN"
 msgstr "IPN szerkesztésének engedélyezése"
 
-#: common/models.py:881
+#: common/models.py:907
 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:887
+#: common/models.py:913
 msgid "Copy Part BOM Data"
 msgstr "Alkatrészjegyzék adatok másolása"
 
-#: common/models.py:888
+#: common/models.py:914
 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:894
+#: common/models.py:920
 msgid "Copy Part Parameter Data"
 msgstr "Alkatrész paraméterek másolása"
 
-#: common/models.py:895
+#: common/models.py:921
 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:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr "Alkatrész teszt adatok másolása"
 
-#: common/models.py:902
+#: common/models.py:928
 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:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr "Kategória paraméter sablonok másolása"
 
-#: common/models.py:909
+#: common/models.py:935
 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:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr "Sablon"
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr "Alkatrészek alapból sablon alkatrészek legyenek"
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr "Gyártmány"
 
-#: common/models.py:923
+#: common/models.py:949
 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:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr "Összetevő"
 
-#: common/models.py:930
+#: common/models.py:956
 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:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr "Beszerezhető"
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr "Alkatrészek alapból beszerezhetők legyenek"
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr "Értékesíthető"
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr "Alkatrészek alapból eladhatók legyenek"
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr "Követésre kötelezett"
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr "Alkatrészek alapból követésre kötelezettek legyenek"
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr "Virtuális"
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr "Alkatrészek alapból virtuálisak legyenek"
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr "Importálás megjelenítése a nézetekben"
 
-#: common/models.py:965
+#: common/models.py:991
 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:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr "Ár megjelenítése a formokon"
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr "Alkatrész árak megjelenítése néhány formon"
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr "Ár megjelenítése az alkatrészjegyzékben"
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr "Árinformációk megjelenítése az alkatrészjegyzék táblákban"
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr "Ártörténet megjelenítése"
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr "Alkatrész ártörténet megjelenítése"
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr "Kapcsolódó alkatrészek megjelenítése"
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr "Alkatrész kapcsolódó alkatrészeinek megjelenítése"
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr "Kezdeti készlet létrehozása"
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr "Kezdeti készlet megadása az alkatrész létrehozásakor"
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr "Belső árak"
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr "Alkatrészekhez belső ár engedélyezése"
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr "Belső ár alkatrészjegyzék árként"
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr "Belső ár használata (ha van) az alkatrészjegyzék árszámításában"
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr "Alkatrész név megjelenítés formátuma"
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr "Formátum az alkatrész név megjelenítéséhez"
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr "Címke nyomtatás engedélyezése"
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr "Címke nyomtatás engedélyezése a web felületről"
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
-msgstr ""
+msgstr "Címke kép DPI"
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
-msgstr ""
+msgstr "Képek felbontása amik átadásra kerülnek címkenyomtató pluginoknak"
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr "Riportok engedélyezése"
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr "Riportok előállításának engedélyezése"
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Debug mód"
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Riportok előállítása HTML formátumban (hibakereséshez)"
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr "Lapméret"
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr "Alapértelmezett lapméret a PDF riportokhoz"
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr "Teszt riportok engedélyezése"
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr "Teszt riportok előállításának engedélyezése"
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr "Teszt riportok hozzáadása"
 
-#: common/models.py:1088
+#: common/models.py:1114
 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:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr "Batch kód sablon"
 
-#: common/models.py:1095
+#: common/models.py:1121
 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:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr "Készlet lejárata"
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr "Készlet lejárat kezelésének engedélyezése"
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr "Lejárt készlet értékesítése"
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr "Lejárt készlet értékesítésének engedélyezése"
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr "Álló készlet ideje"
 
-#: common/models.py:1115
+#: common/models.py:1141
 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:1117
+#: common/models.py:1143
 msgid "days"
 msgstr "nap"
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr "Lejárt készlet gyártása"
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr "Gyártás engedélyezése lejárt készletből"
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr "Készlet tulajdonosok kezelése"
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr "Tuajdonosok kezelésének engedélyezése a készlet helyekre és tételekre"
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
-msgstr "Gyártási utasítás azonosító előtagja"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
+msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
-msgstr "Előtag értéke a gyártási utasítás azonosítóhoz"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
+msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
-msgstr "Gyártási utasítás azonosító reguláris kifejezés"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
+msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
-msgstr "Gyártási utasítás azonosítóra illeszkedő reguláris kifejezés"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
+msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr "Vevői rendelés azonosító előtagja"
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr "Előtag értéke a vevői rendelés azonosítóhoz"
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr "Vevői rendeléshez alapértelmezett szállítmány"
 
-#: common/models.py:1154
+#: common/models.py:1177
 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:1160
-msgid "Purchase Order Reference Prefix"
-msgstr "Beszerzési rendelés azonosító előtagja"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
+msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
-msgstr "Előtag értéke a beszerzési rendelés azonosítóhoz"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
+msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr "Elfelejtett jelszó engedélyezése"
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr "Elfelejtett jelszó funkció engedélyezése a bejentkező oldalon"
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr "Regisztráció engedélyezése"
 
-#: common/models.py:1175
+#: common/models.py:1199
 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:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr "SSO engedélyezése"
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr "SSO engedélyezése a bejelentkező oldalon"
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr "Email szükséges"
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr "Kötelező email megadás regisztrációkor"
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr "SSO felhasználók automatikus kitöltése"
 
-#: common/models.py:1196
+#: common/models.py:1220
 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:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr "Email kétszer"
 
-#: common/models.py:1203
+#: common/models.py:1227
 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:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr "Jelszó kétszer"
 
-#: common/models.py:1210
+#: common/models.py:1234
 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:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr "Csoport regisztráláskor"
 
-#: common/models.py:1217
+#: common/models.py:1241
 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:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr "Többfaktoros hitelesítés kényszerítése"
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr "A felhasználóknak többfaktoros hitelesítést kell használniuk."
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr "Pluginok ellenőrzése indításkor"
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr "Ellenőrizze induláskor hogy minden plugin telepítve van - engedélyezd konténer környezetben (docker)"
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr "URL integráció engedélyezése"
 
-#: common/models.py:1240
+#: common/models.py:1264
 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:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr "Navigációs integráció engedélyezése"
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr "Navigációs integráció engedélyezése a pluginok számára"
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr "App integráció engedélyezése"
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr "App hozzáadásának engedélyezése a pluginok számára"
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr "Ütemezés integráció engedélyezése"
 
-#: common/models.py:1264
+#: common/models.py:1288
 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:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr "Esemény integráció engedélyezése"
 
-#: common/models.py:1272
+#: common/models.py:1296
 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:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 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:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr "Értesítésre beállított alkatrészek megjelenítése"
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr "Alkatrész értesítések megjelenítése a főoldalon"
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr "Értesítésre beállított kategóriák megjelenítése"
 
-#: common/models.py:1319
+#: common/models.py:1343
 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:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr "Legújabb alkatrészek megjelenítése"
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr "Legújabb alkatrészek megjelenítése a főoldalon"
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr "Legfrissebb alkatrész szám"
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr "Főoldalon megjelenítendő legújabb alkatrészek"
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr "Jóváhagyás nélküli alkatrészjegyzékek megjelenítése"
 
-#: common/models.py:1340
+#: common/models.py:1364
 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:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr "Legfrissebb készlet változások megjelenítése"
 
-#: common/models.py:1347
+#: common/models.py:1371
 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:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr "Legfrissebb készlet mennyiség"
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr "Főoldalon megjelenítendő legújabb készlet tételek száma"
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr "Alacsony készlet megjelenítése"
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr "Alacsony készletek megjelenítése a főoldalon"
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr "Kimerült készlet megjelenítése"
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr "Kimerült készletek megjelenítése a főoldalon"
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr "Gyártáshoz szükséges készlet megjelenítése"
 
-#: common/models.py:1375
+#: common/models.py:1399
 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:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr "Lejárt készlet megjelenítése"
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr "Lejárt készletek megjelenítése a főoldalon"
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr "Állott készlet megjelenítése"
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr "Álló készletek megjelenítése a főoldalon"
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr "Függő gyártások megjelenítése"
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr "Folyamatban lévő gyártások megjelenítése a főoldalon"
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr "Késésben lévő gyártások megjelenítése"
 
-#: common/models.py:1403
+#: common/models.py:1427
 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:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr "Kintlévő beszerzési rendelések megjelenítése"
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr "Kintlévő beszerzési rendelések megjelenítése a főoldalon"
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr "Késésben lévő megrendelések megjelenítése"
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr "Késésben lévő megrendelések megjelenítése a főoldalon"
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr "Függő vevői rendelések megjelenítése"
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr "Függő vevői rendelések megjelenítése a főoldalon"
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr "Késésben lévő vevői rendelések megjelenítése"
 
-#: common/models.py:1431
+#: common/models.py:1455
 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:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr "Beágyazott címke megjelenítés"
 
-#: common/models.py:1438
+#: common/models.py:1462
 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:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr "Beágyazott riport megjelenítés"
 
-#: common/models.py:1445
+#: common/models.py:1469
 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:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr "Alkatrészek keresése"
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr "Alkatrészek megjelenítése a keresési előnézetben"
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr "Beszállítói alkatrészek keresése"
 
-#: common/models.py:1459
+#: common/models.py:1483
 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:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr "Gyártói alkatrészek keresése"
 
-#: common/models.py:1466
+#: common/models.py:1490
 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:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr "Inaktív alkatrészek elrejtése"
 
-#: common/models.py:1473
+#: common/models.py:1497
 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:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr "Kategóriák keresése"
 
-#: common/models.py:1480
+#: common/models.py:1504
 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:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr "Készlet keresése"
 
-#: common/models.py:1487
+#: common/models.py:1511
 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:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr "Nem elérhető készlet tételek elrejtése"
 
-#: common/models.py:1494
+#: common/models.py:1518
 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:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr "Helyek keresése"
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr "Készlet helyek megjelenítése a keresési előnézetben"
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr "Cégek keresése"
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr "Cégek megjelenítése a keresési előnézetben"
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr "Beszerzési rendelések keresése"
 
-#: common/models.py:1515
+#: common/models.py:1539
 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:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr "Inaktív beszerzési rendelések kihagyása"
 
-#: common/models.py:1522
+#: common/models.py:1546
 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:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr "Vevői rendelések keresése"
 
-#: common/models.py:1529
+#: common/models.py:1553
 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:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr "Inaktív vevői rendelések kihagyása"
 
-#: common/models.py:1536
+#: common/models.py:1560
 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:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr "Keresési előnézet eredményei"
 
-#: common/models.py:1543
+#: common/models.py:1567
 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:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr "Mennyiség megjelenítése a formokon"
 
-#: common/models.py:1550
+#: common/models.py:1574
 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:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr "ESC billentyű zárja be a formot"
 
-#: common/models.py:1557
+#: common/models.py:1581
 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:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr "Rögzített menüsor"
 
-#: common/models.py:1564
+#: common/models.py:1588
 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:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr "Dátum formátum"
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr "Preferált dátum formátum a dátumok kijelzésekor"
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Alkatrész ütemezés"
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr "Alkatrész ütemezési információk megjelenítése"
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr "Árlépcső mennyiség"
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr "Ár"
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr "Egységár egy meghatározott mennyiség esetén"
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr "Végpont"
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr "Végpont ahol ez a webhook érkezik"
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr "Webhook neve"
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr "Aktív"
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr "Aktív-e ez a webhook"
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr "Token"
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr "Token a hozzáféréshez"
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr "Titok"
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr "Megosztott titok a HMAC-hoz"
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr "Üzenet azonosító"
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr "Egyedi azonosító ehhez az üzenethez"
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr "Kiszolgáló"
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr "Kiszolgáló ahonnan ez az üzenet érkezett"
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr "Fejléc"
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr "Üzenet fejléce"
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr "Törzs"
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr "Üzenet törzse"
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr "Végpont amin ez az üzenet érkezett"
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr "Dolgozott rajta"
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr "Befejeződött a munka ezzel az üzenettel?"
 
@@ -2571,25 +2647,25 @@ msgstr "Új {verbose_name}"
 
 #: common/notifications.py:294
 msgid "A new order has been created and assigned to you"
-msgstr ""
+msgstr "Egy új megrendelés létrehozva, és hozzád rendelve"
 
 #: common/notifications.py:300
 msgid "Items Received"
-msgstr ""
+msgstr "Készlet érkezett"
 
 #: common/notifications.py:302
 msgid "Items have been received against a purchase order"
-msgstr ""
+msgstr "Készlet érkezett egy beszerzési megrendeléshez"
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr "Fájl feltöltése"
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr "Mezők egyeztetése"
 
@@ -2612,15 +2688,6 @@ msgstr "Importált alkatrészek"
 msgid "Previous Step"
 msgstr "Előző lépés"
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr "URL"
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr "Kép URL"
-
 #: company/models.py:98
 msgid "Company description"
 msgstr "Cég leírása"
@@ -2631,7 +2698,7 @@ msgstr "A cég leírása"
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr "Weboldal"
 
@@ -2708,9 +2775,9 @@ msgstr "gyártó-e"
 msgid "Does this company manufacture parts?"
 msgstr "Gyárt ez a cég alkatrészeket?"
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr "Pénznem"
 
@@ -2718,9 +2785,9 @@ msgstr "Pénznem"
 msgid "Default currency used for this company"
 msgstr "Cég által használt alapértelmezett pénznem"
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr "Kiindulási alkatrész"
 
@@ -2732,11 +2799,11 @@ msgstr "Válassz alkatrészt"
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr "Gyártó"
 
@@ -2746,11 +2813,11 @@ msgstr "Gyártó kiválasztása"
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr "MPN"
 
@@ -2779,8 +2846,8 @@ msgstr "Paraméter neve"
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr "Érték"
@@ -2792,7 +2859,7 @@ msgstr "Paraméter értéke"
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr "Mértékegységek"
 
@@ -2805,15 +2872,15 @@ 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:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr "Beszállító"
 
@@ -2822,9 +2889,9 @@ msgid "Select supplier"
 msgstr "Beszállító kiválasztása"
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr "SKU"
 
@@ -2847,7 +2914,7 @@ msgstr "Beszállítói alkatrész leírása"
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr "Megjegyzés"
 
@@ -2861,7 +2928,7 @@ msgstr "Minimális díj (pl. tárolási díj)"
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr "Csomagolás"
 
@@ -2880,10 +2947,10 @@ msgstr "Többszörös rendelés"
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr "Elérhető"
 
@@ -2903,22 +2970,22 @@ msgstr "Utolsó elérhetőségi adat frissítés"
 msgid "last updated"
 msgstr "utoljára módosítva"
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr "Beszállító által használt alapértelmezett pénznem"
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr "Pénznem kódja"
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr "Cég"
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr "Beszerzési rendelés létrehozása"
 
@@ -2931,7 +2998,7 @@ msgid "Edit company information"
 msgstr "Cég adatainak szerkesztése"
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr "Cég szerkesztése"
 
@@ -2954,14 +3021,14 @@ msgstr "Új kép feltöltése"
 msgid "Download image from URL"
 msgstr "Kép letöltése URL-ről"
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr "Vevő"
 
@@ -2978,6 +3045,11 @@ msgstr "Telefonszám"
 msgid "Upload Image"
 msgstr "Kép feltöltése"
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr "Kép letöltése"
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3075,7 +3147,7 @@ msgid "New Sales Order"
 msgstr "Új vevői rendelés"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr "Hozzárendelt készlet"
 
@@ -3083,7 +3155,7 @@ msgstr "Hozzárendelt készlet"
 msgid "Supplier List"
 msgstr "Beszállítók listája"
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3096,12 +3168,12 @@ msgid "Order part"
 msgstr "Alkatrész rendelés"
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr "Gyártói alkatrész szerkesztése"
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr "Gyártói alkatrész törlése"
 
@@ -3115,7 +3187,7 @@ msgid "No manufacturer information available"
 msgstr "Nincs elérhető gyártói információ"
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3129,7 +3201,7 @@ msgstr "Beszállítói alkatrész törlése"
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr "Törlés"
@@ -3174,10 +3246,10 @@ msgid "Assigned Stock Items"
 msgstr "Hozzárendelt készlet tételek"
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr "Beszállítói alkatrész"
 
@@ -3199,7 +3271,7 @@ msgstr "Elérhetőség frissítése"
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr "Beszállítói alkatrész szerkesztése"
 
@@ -3283,7 +3355,7 @@ msgstr "Alkatrész elérhetőség frissítése"
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3312,52 +3384,35 @@ msgstr "Árazás"
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr "Készlet tételek"
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr "Új beszállító"
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr "Új gyártó"
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr "Vevők"
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr "Új vevő"
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr "Cégek"
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr "Új cég"
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr "Kép letöltése"
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr "A kép mérete meghaladja a maximum megengedett letöltés méretét"
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr "Érvénytelen válasz: {code}"
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr "A megadott URL nem egy érvényes kép fájl"
-
 #: label/models.py:102
 msgid "Label name"
 msgstr "Címke neve"
@@ -3411,7 +3466,7 @@ 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:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr "Szűrők"
 
@@ -3423,438 +3478,438 @@ msgstr "Lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok"
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr "Alkatrész lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)"
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr "Rendelés leírása"
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr "Link külső weboldalra"
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr "Készítette"
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr "Felhasználó vagy csoport aki felelőse ennek a rendelésnek"
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr "Rendelés jegyzetek"
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr "Rendelés azonosító"
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr "Beszerzési rendelés állapota"
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr "Cég akitől a tételek beszerzésre kerülnek"
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr "Beszállítói azonosító"
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr "Beszállítói rendelés azonosító kód"
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr "érkeztette"
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr "Kiállítás dátuma"
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr "Kiállítás dátuma"
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr "Várható beérkezés"
 
-#: order/models.py:318
+#: order/models.py:281
 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:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr "Rendelés teljesítési dátuma"
 
-#: order/models.py:360
+#: order/models.py:323
 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:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr "Mennyiség pozitív kell legyen"
 
-#: order/models.py:661
+#: order/models.py:638
 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:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr "Vevői azonosító "
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr "Megrendelés azonosító kódja a vevőnél"
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr "Cél dátum a rendelés teljesítéséhez. Ez után számít majd késettnek."
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr "Kiszállítás dátuma"
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr "szállította"
 
-#: order/models.py:737
+#: order/models.py:714
 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:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr "Csak függő rendelés jelölhető késznek"
 
-#: order/models.py:744
+#: order/models.py:721
 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:747
+#: order/models.py:724
 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:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr "Tétel mennyiség"
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr "Sortétel azonosító"
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr "Sortétel megjegyzései"
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr "Cél szállítási dátuma ennek a sortételnek"
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr "Kontextus"
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr "További kontextus ehhez a sorhoz"
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr "Egységár"
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr "Beszállítói alkatrésznek egyeznie kell a beszállítóval"
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr "törölve"
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr "Rendelés"
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr "Beszerzési rendelés"
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr "Beszállítói alkatrész"
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr "Beérkezett"
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr "Érkezett tételek száma"
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr "Beszerzési ár"
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr "Beszerzési egységár"
 
-#: order/models.py:1048
+#: order/models.py:1026
 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:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
-msgstr ""
+msgstr "Virtuális alkatrészt nem lehet vevői rendeléshez adni"
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
-msgstr ""
+msgstr "Csak értékesíthető alkatrészeket lehet vevői rendeléshez adni"
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr "Eladási ár"
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr "Eladási egységár"
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr "Szállított mennyiség"
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr "Szállítás dátuma"
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr "Ellenőrizte"
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr "Felhasználó aki ellenőrizte ezt a szállítmányt"
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr "Szállítmány száma"
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr "Szállítmány megjegyzései"
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr "Nyomkövetési szám"
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr "Szállítmány nyomkövetési információ"
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr "Számlaszám"
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr "Hozzátartozó számla referencia száma"
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr "Szállítmány már elküldve"
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr "Szállítmány nem tartalmaz foglalt készlet tételeket"
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr "Készlet tétel nincs hozzárendelve"
-
-#: order/models.py:1392
-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:1394
-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:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr "A lefoglalandó mennyiség nem haladhatja meg a készlet mennyiségét"
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr "Készlet tétel túlfoglalva"
-
-#: order/models.py:1407 order/serializers.py:1047
-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:1410
-msgid "Sales order does not match shipment"
-msgstr "Vevői rendelés nem egyezik a szállítmánnyal"
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr "Szállítmány nem egyezik a vevői rendeléssel"
-
-#: order/models.py:1419
-msgid "Line"
-msgstr "Sor"
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr "Szállítmány"
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr "Szállítmány száma"
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr "Szállítmány megjegyzései"
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr "Nyomkövetési szám"
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr "Szállítmány nyomkövetési információ"
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr "Számlaszám"
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr "Hozzátartozó számla referencia száma"
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr "Szállítmány már elküldve"
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr "Szállítmány nem tartalmaz foglalt készlet tételeket"
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr "Készlet tétel nincs hozzárendelve"
+
+#: order/models.py:1370
+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:1372
+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:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr "A lefoglalandó mennyiség nem haladhatja meg a készlet mennyiségét"
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr "Készlet tétel túlfoglalva"
+
+#: order/models.py:1385 order/serializers.py:1066
+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:1388
+msgid "Sales order does not match shipment"
+msgstr "Vevői rendelés nem egyezik a szállítmánnyal"
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr "Szállítmány nem egyezik a vevői rendeléssel"
+
+#: order/models.py:1397
+msgid "Line"
+msgstr "Sor"
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr "Vevői rendelés szállítmány azonosító"
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr "Tétel"
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr "Válaszd ki a foglalásra szánt készlet tételt"
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr "Készlet foglalási mennyiség megadása"
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr "Pénznem"
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr "A rendelést nem lehet törölni"
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr "A rendelés nem nyitott"
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr "Beszérzési ár pénzneme"
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr "Beszállítói alkatrészt meg kell adni"
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr "Beszerzési rendelést meg kell adni"
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 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:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr "A beszerzési rendelésnek egyeznie kell a beszállítóval"
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr "Sortétel"
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr "Sortétel nem egyezik a beszerzési megrendeléssel"
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr "Válassz cél helyet a beérkezett tételeknek"
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr "Írd be a batch kódját a beérkezett tételeknek"
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr "Írd be a sorozatszámokat a beérkezett tételekhez"
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr "Vonalkód hash"
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr "Egyedi azonosító mező"
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr "Ez a vonalkód már használva van"
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 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:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr "Sortételt meg kell adni"
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr "A cél helyet kötelező megadni"
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr "Megadott vonalkódoknak egyedieknek kel lenniük"
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr "Eladási ár pénzneme"
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr "Nincsenek szállítmány részletek megadva"
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr "Sortétel nincs hozzárendelve ehhez a rendeléshez"
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr "Mennyiség pozitív kell legyen"
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr "Írd be a sorozatszámokat a kiosztáshoz"
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr "Szállítmány kiszállítva"
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr "Szállítmány nincs hozzárendelve ehhez a rendeléshez"
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr "Nincs találat a következő sorozatszámokra"
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr "A következő sorozatszámok már ki lettek osztva"
 
@@ -3953,7 +4008,7 @@ msgid "Incomplete"
 msgstr "Hiányos"
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr "Kiküldve"
 
@@ -3997,10 +4052,10 @@ msgstr "Beszállítói alkatrész kiválasztása"
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4034,9 +4089,9 @@ msgid "Purchase Order Items"
 msgstr "Beszerzési rendelés tételei"
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr "Sortétel hozzáadása"
 
@@ -4064,7 +4119,7 @@ msgstr "Érkezett tételek"
 msgid "Order Notes"
 msgstr "Rendelés megjegyzések"
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr "Sortétel hozzáadása"
 
@@ -4082,7 +4137,7 @@ msgid "Print packing list"
 msgstr "Csomagolási lista nyomtatása"
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr "Szállítmányok készen"
 
@@ -4096,7 +4151,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr "Ehhez a vevői rendeléshez nincs minden alkatrész lefoglalva"
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr "Vevői azonosító"
 
@@ -4120,8 +4175,8 @@ msgid "Pending Shipments"
 msgstr "Függő szállítmányok"
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr "Műveletek"
 
@@ -4205,18 +4260,19 @@ msgid "Total Stock"
 msgstr "Teljes készlet"
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr "Elérhető készlet"
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr "Rendelve"
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr "Add meg a mennyiséget az árszámításhoz"
 
@@ -4405,7 +4461,7 @@ msgstr "Ez egy virtuális nem megfogható alkatrész, pl. szoftver vagy licenc?"
 
 #: part/models.py:922
 msgid "Part notes"
-msgstr ""
+msgstr "Alkatrész megjegyzések"
 
 #: part/models.py:924
 msgid "BOM checksum"
@@ -4457,7 +4513,7 @@ msgid "Enter description for this test"
 msgstr "Adj hozzá egy leírást ehhez a teszthez"
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr "Kötelező"
 
@@ -4572,8 +4628,8 @@ msgid "BOM quantity for this BOM item"
 msgstr "Alkatrészjegyzék mennyiség ehhez az alkatrészjegyzék tételhez"
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr "Opcionális"
 
@@ -4606,9 +4662,9 @@ msgid "BOM line checksum"
 msgstr "Alkatrészjegyzék sor ellenőrző összeg"
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr "Örökölt"
 
@@ -4617,7 +4673,7 @@ 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:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr "Változatok"
 
@@ -4625,7 +4681,7 @@ msgstr "Változatok"
 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:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 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"
 
@@ -4669,79 +4725,79 @@ msgstr "Alkatrész kapcsolat nem hozható létre önmagával"
 msgid "Duplicate relationship already exists"
 msgstr "Már létezik duplikált alkatrész kapcsolat"
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr "Beszerzési pénzneme ennek a készlet tételnek"
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr "Válassz alkatrészt ahonnan az alkatrészjegyzéket másoljuk"
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr "Létező adat törlése"
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr "Meglévő alkatrészjegyzék tételek törlése a másolás előtt"
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr "Örököltekkel együtt"
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr "Sablon alkatrészektől örökölt alkatrészjegyzék tételek használata"
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr "Hibás sorok kihagyása"
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr "Engedély a hibás sorok kihagyására"
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr "Helyettesítő alkatrészek másolása"
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr "Helyettesítő alkatrészek másolása az alkatrészjegyzék tételek másolásakor"
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr "Meglévő alkatrészjegyzék törlése"
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr "Meglévő alkatrészjegyzék tételek törlése a feltöltés előtt"
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr "Nincs megadva alkatrész oszlop"
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr "Több egyező alkatrész is található"
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr "Nincs egyező alkatrész"
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr "Az alkatrész nem lett összetevőként jelölve"
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr "Mennyiség nincs megadva"
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr "Érvénytelen mennyiség"
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr "Legalább egy alkatrészjegyzék tétel szükséges"
 
@@ -4825,7 +4881,7 @@ msgstr "Kategória elérési út"
 msgid "Top level part category"
 msgstr "Legfelső szintű alkatrész kategória"
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr "Alkategóriák"
@@ -4838,7 +4894,7 @@ msgstr "Alkatrészek száma (alkategóriákkal együtt)"
 msgid "Create new part"
 msgstr "Alkatrész létrehozása"
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr "Új alkatrész"
 
@@ -4863,19 +4919,19 @@ msgstr "Címkék nyomtatása"
 msgid "Part Parameters"
 msgstr "Alkatrész paraméterek"
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr "Alkatrész kategória létrehozása"
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr "Alkatrész létrehozása"
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr "Új alkatrész létrehozása ez után"
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr "Alkatrész sikeresen létrehozva"
 
@@ -5185,15 +5241,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr "Virtuális (nem kézzelfogható alkatrész)"
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr "Inaktív"
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr "Alkatrész részletei"
 
@@ -5203,7 +5259,8 @@ msgid "This part is a variant of %(link)s"
 msgstr "Ez az alkatrész egy változata a %(link)s alkatrésznek"
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr "Készleten"
 
@@ -5217,7 +5274,7 @@ msgstr "Gyártáshoz lefoglalva"
 msgid "Allocated to Sales Orders"
 msgstr "Vevő rendeléshez lefoglalva"
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr "Gyártható"
 
@@ -5248,7 +5305,7 @@ msgstr "Számítás"
 msgid "No matching images found"
 msgstr "Nincs egyező kép"
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr "Részletek elrejtése"
 
@@ -5275,7 +5332,7 @@ msgid "Total Cost"
 msgstr "Teljes költség"
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr "Nincs beszállítói árinfomáció"
 
@@ -5358,7 +5415,7 @@ msgstr "Eladási ár megjelenítése"
 msgid "Calculation parameters"
 msgstr "Számítási paraméterek"
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr "Beszállítói költség"
 
@@ -5451,40 +5508,40 @@ msgstr "Alkatrész változat létrehozása"
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr "Új változat létrehozása a <em>'%(full_name)s'</em> sablonból."
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr "Ismeretlen adatbázis"
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr "{title} v{version}"
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr "Azonosítók egyeztetése"
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr "Egyik sem"
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr "Alkatrész QR kódja"
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr "Válassz képet az alkatrészhez"
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr "Alkatrész képe frissítve"
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr "Az alkatrész képe nem található"
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr "Alkatrész árak"
 
@@ -5602,11 +5659,11 @@ msgstr "Plugin"
 msgid "Method"
 msgstr "Módszer"
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr "Nincs szerző"
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr "Nincs dátum"
 
@@ -5743,35 +5800,35 @@ msgstr "Alkatrész lekérdezés szűrők (vesszővel elválasztott kulcs=érték
 msgid "Purchase order query filters"
 msgstr "Megrendelés lekérdezés szűrők"
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr "Vevő rendelés lekérdezés szűrők"
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr "Részlet"
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr "Riport részlet fájl"
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr "Részlet fájl leírása"
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr "Eszköz"
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr "Riport asset fájl"
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr "Asset fájl leírása"
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr "Szükséges ehhez"
 
@@ -5785,11 +5842,11 @@ msgstr "Készlet tétel teszt riport"
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr "Sorozatszám"
 
@@ -5798,19 +5855,19 @@ msgid "Test Results"
 msgstr "Teszt eredmények"
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr "Teszt"
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr "Eredmény"
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr "Dátum"
 
@@ -5829,7 +5886,7 @@ msgstr "Beépített tételek"
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr "Sorozatszám"
 
@@ -5845,57 +5902,57 @@ msgstr "Egy érvényes alkatrészt meg kell adni"
 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"
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr "Tulajdonos"
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr "Tulajdonos kiválasztása"
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr "Létezik már készlet tétel ilyen a sorozatszámmal"
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
-msgstr ""
+msgstr "Virtuális alkatrészből nem lehet készletet létrehozni"
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr "A alkatrész típus ('{pf}') {pe} kell legyen"
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr "Mennyiség 1 kell legyen a sorozatszámmal rendelkező tételnél"
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr "Nem lehet sorozatszámot megadni ha a mennyiség több mint egy"
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr "A tétel nem tartozhat saját magához"
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr "A tételnek kell legyen gyártási azonosítója ha az is_bulding igaz"
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr "Gyártási azonosító nem ugyanarra az alkatrész objektumra mutat"
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr "Szülő készlet tétel"
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr "Kiindulási alkatrész"
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr "Válassz egy egyező beszállítói alkatrészt ehhez a készlet tételhez"
 
@@ -6031,7 +6088,7 @@ msgstr "Készlet tétel gyártás alatt"
 msgid "Serialized stock cannot be merged"
 msgstr "Követésre kötelezett készlet nem vonható össze"
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr "Duplikált készlet tételek vannak"
 
@@ -6051,160 +6108,164 @@ msgstr "Készlet tételek állapotainak egyeznie kell"
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr "Készlet tétel nem mozgatható mivel nincs készleten"
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr "Bejegyzés megjegyzései"
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr "Ehhez a teszthez meg kell adni értéket"
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr "Ehhez a teszthez fel kell tölteni mellékletet"
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr "Teszt neve"
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr "Teszt eredménye"
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr "Teszt kimeneti értéke"
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr "Teszt eredmény melléklet"
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr "Tesztek megjegyzései"
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr "Beszerzési ára ennek a készlet tételnek"
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr "Add meg hány készlet tételt lássunk el sorozatszámmal"
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr "A mennyiség nem lépheti túl a rendelkezésre álló készletet ({q})"
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr "Írd be a sorozatszámokat az új tételekhez"
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr "Cél készlet hely"
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr "Opcionális megjegyzés mező"
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr "Sorozatszámokat nem lehet hozzárendelni ehhez az alkatrészhez"
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr "A sorozatszámok már léteznek"
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr "Válaszd ki a beépítésre szánt készlet tételt"
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr "Készlet tétel nem elérhető"
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr "A kiválasztott alkatrész nincs az alkatrészjegyzékben"
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr "Cél hely a kiszedett tételeknek"
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr "Tranzakció megjegyzés hozzáadása (opcionális)"
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
-msgstr ""
+msgstr "Válassz alkatrészt amire konvertáljuk a készletet"
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
-msgstr ""
+msgstr "A kiválasztott alkatrész nem megfelelő a konverzióhoz"
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr "Cél hely a visszatérő tételeknek"
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr "Az alkatrésznek értékesíthetőnek kell lennie"
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr "A tétel egy vevő rendeléshez foglalt"
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr "A tétel egy gyártási utasításhoz foglalt"
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr "Vevő akihez rendeljük a készlet tételeket"
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr "A kiválasztott cég nem egy vevő"
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr "Készlet hozzárendelés megjegyzései"
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr "A készlet tételek listáját meg kell adni"
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr "Készlet összevonás megjegyzései"
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr "Nem egyező beszállítók megengedése"
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr "Különböző beszállítói alkatrészekből származó készletek összevonásának engedélyezése"
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr "Nem egyező állapotok megjelenítése"
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr "Különböző állapotú készletek összevonásának engedélyezése"
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr "Legalább két készlet tételt meg kell adni"
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr "Készlet tétel elsődleges kulcs értéke"
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr "Készlet tranzakció megjegyzései"
 
@@ -6229,7 +6290,7 @@ msgstr "Teszt adatok"
 msgid "Test Report"
 msgstr "Teszt riport"
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr "Teszt adatok törlése"
 
@@ -6241,7 +6302,7 @@ msgstr "Teszt adatok hozzáadása"
 msgid "Installed Stock Items"
 msgstr "Beépített készlet tételek"
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr "Készlet tétel beépítése"
 
@@ -6249,7 +6310,7 @@ msgstr "Készlet tétel beépítése"
 msgid "Delete all test results for this stock item"
 msgstr "Készlet tétel összes teszt eredményének törlése"
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr "Teszt eredmény hozzáadása"
 
@@ -6407,7 +6468,7 @@ msgid "Available Quantity"
 msgstr "Elérhető mennyiség"
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr "Nincs beállítva hely"
 
@@ -6421,7 +6482,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr "Ez a készlet tétel lejárt %(item.expiry_date)s-n"
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr "Lejárt"
 
@@ -6431,12 +6492,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr "Ez a készlet tétel lejár %(item.expiry_date)s-n"
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr "Állott"
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr "Utoljára módosítva"
 
@@ -6454,7 +6515,7 @@ msgstr "Készlet állapot szerkesztése"
 
 #: stock/templates/stock/item_base.html:594
 msgid "Select one of the part variants listed below."
-msgstr ""
+msgstr "Válassz a lenti alkatrész változatok közül"
 
 #: stock/templates/stock/item_base.html:597
 msgid "Warning"
@@ -6570,11 +6631,11 @@ msgstr "Nincs jogosultságod az oldal megtekintéséhez."
 
 #: templates/403_csrf.html:11
 msgid "Authentication Failure"
-msgstr ""
+msgstr "Hitelesítési hiba"
 
 #: templates/403_csrf.html:14
 msgid "You have been logged out from InvenTree."
-msgstr ""
+msgstr "Kijelentkeztél az InvenTreeből."
 
 #: templates/403_csrf.html:19 templates/navbar.html:142
 msgid "Login"
@@ -6679,7 +6740,7 @@ msgstr "Értesítések előzményei"
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr "Értesítések törlése"
 
@@ -6710,7 +6771,7 @@ msgstr "Nem található régebbi értesítés"
 msgid "Delete all read notifications"
 msgstr "Olvasott értesítések törlése"
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr "Értesítés törlése"
@@ -6821,7 +6882,7 @@ msgstr "Plugin beállítások"
 
 #: templates/InvenTree/settings/plugin.html:16
 msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage."
-msgstr ""
+msgstr "Az alábbi beállítások módosításához a kiszolgáló azonnali újraindítása szükséges. Aktív használat közben ne változtass ezeken."
 
 #: templates/InvenTree/settings/plugin.html:34
 msgid "Plugins"
@@ -7152,7 +7213,7 @@ msgstr "Fiókodba a következő harmadik fél fiókjainak bármelyikével bejele
 
 #: templates/InvenTree/settings/user.html:158
 msgid "There are no social network accounts connected to this account."
-msgstr ""
+msgstr "Jelenleg nincs ehhez a fiókhoz kapcsolódó közösségi fiókod."
 
 #: templates/InvenTree/settings/user.html:164
 msgid "Add a 3rd Party Account"
@@ -7176,7 +7237,7 @@ msgstr "Statikus"
 
 #: templates/InvenTree/settings/user.html:204
 msgid "Multifactor authentication is not configured for your account"
-msgstr ""
+msgstr "Többfaktoros autentikáció nincs beállítva a fiókodhoz"
 
 #: templates/InvenTree/settings/user.html:211
 msgid "Change factors"
@@ -7291,11 +7352,11 @@ msgstr "Segítsd a fordítási munkát!"
 
 #: templates/InvenTree/settings/user_display.html:105
 msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged."
-msgstr ""
+msgstr "A nyelvi fordításai a web alkalmazásnak közösségiek a crowdin-en. A közreműködéseket szívesen fogadjuk és bátorítjuk."
 
 #: templates/InvenTree/settings/user_display.html:106
 msgid "InvenTree Translation Project"
-msgstr ""
+msgstr "InvenTree fordítási projekt"
 
 #: templates/InvenTree/settings/user_homepage.html:9
 msgid "Home Page Settings"
@@ -7371,7 +7432,7 @@ msgstr "Email cím megerősítése"
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr "Erősítsd meg hogy a <a href=\"mailto:%(email)s\">%(email)s</a> email a %(user_display)s felhasználó email címe."
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "Megerősítés"
 
@@ -7418,7 +7479,7 @@ msgstr "Biztosan ki akarsz jelentkezni?"
 #: 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 "Vissza az alkalmazáshoz"
 
 #: templates/account/password_reset.html:5
 #: templates/account/password_reset.html:12
@@ -7489,11 +7550,11 @@ msgstr "Tartalék tokenek lettek előállítva, de biztonsági okokból itt nem
 
 #: templates/allauth_2fa/backup_tokens.html:20
 msgid "No backup tokens are available. Press the button below to generate some."
-msgstr ""
+msgstr "Nincsenek másodlagos tokenek. Nyomd meg a lenti gombot a létrehozásukhoz."
 
 #: templates/allauth_2fa/backup_tokens.html:28
 msgid "Generate Tokens"
-msgstr ""
+msgstr "Tokenek generálása"
 
 #: templates/allauth_2fa/remove.html:6
 msgid "Disable Two-Factor Authentication"
@@ -7505,7 +7566,7 @@ msgstr "Biztos vagy benne?"
 
 #: templates/allauth_2fa/remove.html:17
 msgid "Disable 2FA"
-msgstr ""
+msgstr "Többfaktoros autentikáció kikapcsolása"
 
 #: templates/allauth_2fa/setup.html:6
 msgid "Setup Two-Factor Authentication"
@@ -7543,7 +7604,7 @@ msgstr "Melléklet hozzáadása"
 msgid "Delete selected attachments"
 msgstr "Kiválasztott mellékletek törlése"
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr "Mellékletek törlése"
 
@@ -7561,7 +7622,7 @@ msgstr "Vedd fel a kapcsolatot a rendszergazdával további információkért"
 
 #: templates/collapse_rows.html:3
 msgid "Collapse all rows"
-msgstr ""
+msgstr "Sorok becsukása"
 
 #: templates/email/build_order_completed.html:9
 #: templates/email/new_order_assigned.html:9
@@ -7590,7 +7651,7 @@ msgid "The following parts are low on required stock"
 msgstr "A következő alkatrészek szükséges készlete alacsony"
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr "Szükséges mennyiség"
 
@@ -7609,23 +7670,7 @@ msgstr "Minimum mennyiség"
 
 #: templates/expand_rows.html:3
 msgid "Expand all rows"
-msgstr ""
-
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr "URL megadása a kép letöltéséhez"
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr "Egy érvényes kép URL-nek kell lennie"
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr "A távoli kiszolgálónak elérhetőnek kell lennie"
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr "A távoli kép mérete nem haladhatja meg a maximális fájlméretet"
+msgstr "Sorok kinyitása"
 
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
@@ -7695,23 +7740,23 @@ msgstr "Hiba kód"
 msgid "All selected attachments will be deleted"
 msgstr "Az összes kijelölt melléklet törlésre kerül"
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr "Nem találhatók mellékletek"
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr "Melléklet szerkesztése"
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr "Feltöltés dátuma"
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr "Melléklet szerkesztése"
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr "Melléklet törlése"
 
@@ -7821,10 +7866,10 @@ msgstr "Sor adatok mutatása"
 msgid "Row Data"
 msgstr "Sor adat"
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr "Bezárás"
@@ -7834,22 +7879,22 @@ msgid "Download BOM Template"
 msgstr "Alkarészjegyzék sablon letöltése"
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr "Formátum"
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr "Fájlfomátum kiválasztása"
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
-msgstr "Többszíntű"
+msgid "Multi Level BOM"
+msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
-msgstr "Többszintű alkatrészjegyzék letöltése"
+msgid "Include BOM data for subassemblies"
+msgstr ""
 
 #: templates/js/translated/bom.js:301
 msgid "Levels"
@@ -7859,422 +7904,426 @@ msgstr "Szintek"
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr "Válaszd ki a maximum alkatrészjegyzék szintet amit exportáljunk (0=összes szintet)"
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr "Paraméter adattal együtt"
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr "Alkatrész paraméter adatok megjelenítése az exportált alkatrészjegyzékben"
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr "Készlet adatokkal együtt"
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr "Készlet adatok megjelenítése az exportált alkatrészjegyzékben"
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr "Gyártói adatokkal együtt"
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr "Gyártói adatok megjelenítése az exportált alkatrészjegyzékben"
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr "Beszállítói adatokkal együtt"
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr "Beszállítói adatok megjelenítése az exportált alkatrészjegyzékben"
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr "Helyettesítő alkatrész törlése"
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr "Válassz és adj hozzá új helyettesítő alkatrészt a lenti mezőben"
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr "Biztosan törölni akarod ezt a helyettesítő alkatrész hozzárendelést?"
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr "Helyettesítő alkatrész törlése"
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr "Helyettesítő hozzáadása"
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr "Alkatrészjegyzék tétel helyettesítők szerkesztése"
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr "Az összes kijelölt alkatrészjegyzék tétel törlésre kerül"
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr "Töröljük a kiválasztott alkatrészjegyzék tételeket?"
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr "BOM betöltése az al-gyártmányhoz"
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr "Vannak helyettesítők"
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr "Készletváltozatok engedélyezve"
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr "Nincs szabad"
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr "Változatokkal és helyettesítőkkel együtt"
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr "Változatokkal együtt"
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr "Helyettesítőkkel együtt"
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr "Helyettesítõk"
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr "Beszerzési ártartomány"
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr "Beszerzési átlagár"
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr "Alkatrészjegyzék megtekintése"
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr "Rendelés allattival együtt"
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr "Alkatrészjegyzék tétel jóváhagyása"
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr "Ez a sor jóvá lett hagyva"
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr "Helyettesítő alkatrészek szerkesztése"
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr "Alkatrészjegyzék tétel szerkesztése"
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr "Alkatrészjegyzék tétel törlése"
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr "Nem találhatók alkatrészjegyzék tételek"
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr "Szükséges alkatrész"
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr "Örökölve a szülő alkatrészjegyzéktől"
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr "Gyártási utasítás szerkesztése"
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr "Gyártási utasítás létrehozása"
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr "Gyártási utasítás törlése"
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr "Biztosan meg szeretnéd szakítani ezt a gyártást?"
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr "Ehhez a gyártáshoz készlet lett hozzárendelve"
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr "Ennek a gyártásnak befejezetlen kimenetei vannak"
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr "Gyártási utasítás készen áll a befejezésre"
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr "Gyártási utasítás befejezetlen"
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr "Gyártási utasítás befejezése"
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr "Következő szabad sorozatszám"
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr "Legutolsó sorozatszám"
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr "Az alkatrészjegyzék követésre kötelezett alkatrészeket tartalmaz"
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr "A gyártási kimeneteket egyesével kell előállítani"
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr "A követésre kötelezett alkatrészekhez sorozatszámot lehet rendelni"
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr "Adj meg sorozatszámokat a több egyedi gyártási kimenet létrehozásához"
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr "Gyártási kimenet létrehozása"
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr "Készlet tételek foglalása ehhez a gyártási kimenethez"
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr "Készlet felszabadítása a gyártási kimenetből"
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr "Gyártási kimenet befejezése"
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr "Gyártási kimenet törlése"
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr "Biztosan szeretnéd a már lefoglalt készlet tételeket felszabadítani ebből a gyártási utasításból?"
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr "Készlet tételek felszabadítása"
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr "Gyártási kimenetek kiválasztása"
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr "Legalább egy gyártási kimenetet ki kell választani"
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr "Kimenet"
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr "Gyártási kimenetek befejezése"
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr "Gyártási kimenetek törlése"
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr "Nincs gyártási utasításhoz történő foglalás"
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr "Hely nincs megadva"
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr "Nem található aktív gyártási kimenet"
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr "Lefoglalt készlet"
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr "Nincsenek követett BOM tételek ehhez a gyártáshoz"
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr "Befejezett tesztek"
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr "Nincsenek szükséges tesztek ehhez a gyártáshoz"
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr "Készlet foglalások szerkesztése"
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr "Készlet foglalások törlése"
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr "Foglalás szerkesztése"
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr "Foglalás törlése"
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr "Vannak helyettesítő alkatrészek"
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr "Szükséges/db"
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr "Nincs elegendő"
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr "Van elegendő"
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr "Lefoglalva"
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr "Gyártási készlet"
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr "Készlet rendelés"
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr "Lefoglalt készlet"
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "Kiválasztott alkatrészek"
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr "Legalább egy alkatrész választása szükséges a foglaláshoz"
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr "Készlet foglalási mennyiség megadása"
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr "Minden alkatrész lefoglalva"
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr "Minden kiválasztott alkatrész teljesen lefoglalva"
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr "Válassz forrás helyet (vagy hagyd üresen ha bárhonnan)"
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr "Készlet foglalása a gyártási utasításhoz"
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr "Nincs egyező készlethely"
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr "Nincs egyező készlet"
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr "Automatikus készlet foglalás"
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr "A készlet automatikusan lefoglalásra került ehhez a gyártási utasításhoz, a megadott feltételek szerint"
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr "Ha egy készlet hely meg van adva, akkor készlet csak arról a helyről lesz foglalva"
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr "Ha a készlet helyettesíthetőnek minősül, akkor az első rendelkezésre álló helyről lesz lefoglalva"
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr "Ha a helyettesítő készlet engedélyezve van, akkor ott az lesz használva ha az elsődleges alkatrésznek nincs készlete"
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr "Készlet tételek foglalása"
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr "Nincs a lekérdezéssel egyező gyártási utasítás"
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr "Kiválaszt"
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr "Gyártás késésben van"
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr "Haladás"
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr "Nincs felhasználói információ"
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr "Nincs lefoglalt alkatrész ehhez"
 
@@ -8282,7 +8331,7 @@ msgstr "Nincs lefoglalt alkatrész ehhez"
 msgid "Add Manufacturer"
 msgstr "Gyártó hozzáadása"
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr "Gyártói alkatrész hozzáadása"
 
@@ -8290,99 +8339,99 @@ msgstr "Gyártói alkatrész hozzáadása"
 msgid "Edit Manufacturer Part"
 msgstr "Gyártói alkatrész szerkesztése"
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr "Beszállító hozzáadása"
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr "Beszállítói alkatrész hozzáadása"
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr "Az összes kiválasztott beszállítói alkatrész törölve lesz"
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr "Beszállítói alkatrészek törlése"
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr "Új cég hozzáadása"
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr "Beszállított alkatrészek"
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr "Gyártott alkatrészek"
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr "Nem található céginformáció"
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr "Az összes kijelölt gyártói alkatrész törlésre kerül"
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr "Gyártói alkatrészek törlése"
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr "Az összes kijelölt paraméter törlésre kerül"
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr "Paraméterek törlése"
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr "Nincs gyártói alkatrész"
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr "Sablon alkatrész"
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr "Gyártmány alkatrész"
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr "Nem található paraméter"
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr "Paraméter szerkesztése"
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr "Paraméter törlése"
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr "Paraméter szerkesztése"
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr "Paraméter törlése"
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr "Nincs beszállítói alkatrész"
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr "Beszállítói alkatrész szerkesztése"
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr "Beszállítói alkatrész törlése"
 
@@ -8420,61 +8469,61 @@ msgstr "Összes szűrő törlése"
 msgid "Create filter"
 msgstr "Szűrő létrehozása"
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr "Művelet tiltva"
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr "Létrehozás nem engedélyezett"
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr "Módosítás nem engedélyezett"
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr "Törlés nem engedélyezett"
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr "Megtekintés nem engedélyezett"
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr "Form nyitva tartása"
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr "Adj meg egy érvényes számot"
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr "Form hibák vannak"
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr "Nincs eredmény"
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr "Keresés"
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr "Bevitel törlése"
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr "Fájl oszlop"
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr "Mező név"
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr "Oszlopok kiválasztása"
 
@@ -8623,25 +8672,25 @@ msgstr "Hely ID"
 msgid "Build ID"
 msgstr "Gyártás ID"
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr "Rendelés ID"
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr "Szállítmány ID"
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr "Kategória ID"
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr "Gyártói cikkszám"
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr "Beszállítói cikkszám"
 
@@ -8665,381 +8714,381 @@ msgstr "Nincs olvasatlan értesítés"
 msgid "Notifications will load here"
 msgstr "Az értesítések itt fognak megjelenni"
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr "Ehhez a szállítmányhoz nincs készlet hozzárendelve"
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr "A következő készlet tételek ki lesznek szállítva"
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr "Szállítmány kész"
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr "Szállítmány megerősítése"
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr "Nincs függő szállítmány"
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr "A függő a szállítmányokhoz nincs készlet hozzárendelve"
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr "Kihagyás"
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr "Beszerzési rendelés befejezése"
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr "Rendelés befejezettnek jelölése?"
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr "Minden sortétel megérkezett"
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr "Ez a rendelés olyan sortételeket tartalmaz amik még nem érkeztek be."
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr "A rendelés befejezésével jelölésével annak adatai és sortételei a továbbiakban már nem lesznek szerkeszthetők."
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr "Beszerzési rendelés törlése"
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr "Biztosan törölni szeretnéd ezt a beszerzési rendelést?"
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr "Ezt a beszerzési rendelést nem lehet törölni"
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr "Beszerzési rendelés kiküldése"
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr "A beszerzési rendelés kiküldése után annak sortételei a továbbiakban már nem lesznek szerkeszthetők."
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr "Vevő rendelés törlése"
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr "A rendelés törlésével annak adatai a továbbiakban már nem lesznek szerkeszthetők."
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr "Szállítmány létrehozása"
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr "Vevő hozzáadása"
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr "Vevői rendelés létrehozása"
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr "Rendelés exportálása"
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr "Legalább egy beszerezhető alkatrészt ki kell választani"
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr "Rendelendő mennyiség"
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr "Új beszállítói alkatrész"
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr "Új beszerzési rendelés"
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr "Hozzáadás beszerzési rendeléshez"
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr "Nincsenek egyező beszállítói alkatrészek"
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr "Nincsenek egyező beszerzési rendelések"
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr "Sortételek kiválasztása"
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr "Legalább egy sortételt ki kell választani"
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr "Batch kód hozzáadása"
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr "Sorozatszám hozzáadása"
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr "Érkező mennyiség"
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr "Készlet állapota"
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr "Rendelési kód"
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr "Megrendelve"
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr "Érkező mennyiség"
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr "Bevételezés megerősítése"
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr "Beszerzési rendelés tételeinek bevételezése"
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr "Nem található beszerzési rendelés"
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr "Rendelés késésben"
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr "Tételek"
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr "Sortétel másolása"
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr "Sortétel szerkesztése"
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr "Sortétel törlése"
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr "Nem találhatók sortételek"
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr "Összesen"
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr "Egységár"
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr "Teljes ár"
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr "Ez a sortétel késésben van"
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr "Sortétel bevételezése"
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr "Sortétel másolása"
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr "Sortétel szerkesztése"
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr "Sortétel törlése"
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr "Sor másolása"
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr "Sor szerkesztése"
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr "Sor törlése"
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr "Sor másolása"
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr "Sor szerkesztése"
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr "Sor törlése"
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr "Nincs egyező sor"
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr "Nem található vevői rendelés"
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr "Érvénytelen vevő"
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr "Szállítmány szerkesztése"
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr "Szállítmány kész"
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr "Szállítmány törlése"
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr "Szállítmány szerkesztése"
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr "Szállítmány törlése"
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr "Nincs egyező szállímány"
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr "Szállítmány azonosító"
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr "Nincs kiszállítva"
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr "Nyomkövetés"
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr "Számla"
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr "Szállítmány hozzáadása"
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr "Készlet foglalás megerősítése"
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr "Készlet foglalása a vevői rendeléshez"
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr "Nincs vevői rendeléshez történő foglalás"
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr "Készlet foglalások szerkesztése"
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr "Törlési művelet megerősítése"
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr "Készlet foglalások törlése"
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr "Vevőnek kiszállítva"
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr "Készlethely nincs megadva"
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr "Sorozatszámok kiosztása"
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr "Készletrendelés"
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr "Árszámítás"
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr "Nem törölhető mivel a tételek ki lettek szállítva"
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr "Nem törölhető mivel tételek vannak lefoglalva"
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr "Sorozatszámok kiosztása"
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr "Egységár módosítása"
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr "Nincs egyező sortétel"
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr "Nincsenek egyező sorok"
 
@@ -9133,11 +9182,11 @@ msgstr "Biztos hogy törölni szeretnéd ezt az alkatrész kategóriát?"
 
 #: templates/js/translated/part.js:333
 msgid "Any child categories will be moved to the parent of this category"
-msgstr ""
+msgstr "A lentebbi kategóriák a szülő kategóriába lesznek mozgatva"
 
 #: templates/js/translated/part.js:334
 msgid "Any parts in this category will be moved to the parent of this category"
-msgstr ""
+msgstr "A kategória alkatrészei a szülő kategóriába lesznek mozgatva"
 
 #: templates/js/translated/part.js:339
 msgid "Delete Part Category"
@@ -9216,7 +9265,7 @@ msgid "Copy Bill of Materials"
 msgstr "Alkatrészjegyzék másolása"
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr "Alacsony készlet"
 
@@ -9244,11 +9293,11 @@ msgstr "Értékesíthető alkatrész"
 msgid "No variants found"
 msgstr "Nincs több változat"
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr "Alkatrész kapcsolatok törlése"
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr "Alkatrész kapcsolatok törlése"
 
@@ -9265,7 +9314,7 @@ msgid "No category"
 msgstr "Nincs kategória"
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr "Megjelenítés listaként"
 
@@ -9289,7 +9338,7 @@ msgstr "Alkatrész kategória kiválasztása"
 msgid "Category is required"
 msgstr "Kategória megadása kötelező"
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr "Megjelenítés fában"
 
@@ -9297,7 +9346,7 @@ msgstr "Megjelenítés fában"
 msgid "Subscribed category"
 msgstr "Értesítésre beállított kategória"
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr "Elérési út"
 
@@ -9465,11 +9514,11 @@ msgstr "Biztosan törölni szeretnéd ezt a készlet helyet?"
 
 #: templates/js/translated/stock.js:171
 msgid "Any child locations will be moved to the parent of this location"
-msgstr ""
+msgstr "A lentebbi helyek a szülő helybe lesznek mozgatva"
 
 #: templates/js/translated/stock.js:172
 msgid "Any stock items in this location will be moved to the parent of this location"
-msgstr ""
+msgstr "A hely készlete a szülő helyre lesz mozgatva"
 
 #: templates/js/translated/stock.js:178
 msgid "Delete Stock Location"
@@ -9720,7 +9769,7 @@ msgid "Stock item is destroyed"
 msgstr "Készlet tétel megsemmisült"
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr "Kimerült"
 
@@ -9728,95 +9777,95 @@ msgstr "Kimerült"
 msgid "Stocktake"
 msgstr "Leltár"
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr "Beszállítói alkatrész nincs megadva"
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr "Nincs a lekérdezésnek megfelelő készlet tétel"
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr "Készlet állapot beállítása"
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr "Státuszkód kiválasztása"
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr "Státuszkódot ki kell választani"
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr "Részletek"
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr "Alkatrész információ nem áll rendelkezésre"
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr "A hely már nem létezik"
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr "Beszerzési megrendelés már nem létezik"
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr "Vevő már nem létezik"
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr "A készlet tétel már nem létezik"
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr "Hozzáadva"
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr "Eltávolítva"
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr "Nincsenek beépített tételek"
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr "Készlet tétel kiszedése"
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr "Válaszd ki a kiszedni való készlet tételt"
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr "Másik tétel beépítése ebbe a készlet tételbe"
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr "Készlet tételek csak akkor építhetők be ha teljesítik a következő kritériumokat"
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr "A készlet tétel egy olyan alkatrészre mutat ami alkatrészjegyzéke ennek a készlet tételnek"
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr "A készlet tétel jelenleg elérhető készleten"
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr "A készlet tétel még nem épült be egy másik tételbe"
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr "A készlet tétel követett vagy sorozatszámmal vagy batch kóddal"
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr "Válaszd ki a beépítendő alkatrészt"
 
@@ -9830,225 +9879,225 @@ msgstr "Gyártmány alkatrész"
 
 #: templates/js/translated/table_filters.js:64
 msgid "Has Available Stock"
-msgstr ""
+msgstr "Van elérhető készlete"
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr "Jóváhagyva"
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr "Készlet változatok engedélyezése"
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr "Alhelyekkel együtt"
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr "Helyekkel együtt"
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr "Alkategóriákkal együtt"
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr "Értesítés beállítva"
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
+#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:226
 msgid "Is Serialized"
 msgstr "Sorozatszámos"
 
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:147
+#: templates/js/translated/table_filters.js:233
 msgid "Serial number GTE"
 msgstr "Sorozatszám >="
 
-#: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
+#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/table_filters.js:234
 msgid "Serial number greater than or equal to"
 msgstr "Sorozatszám nagyobb vagy egyenlő mint"
 
-#: templates/js/translated/table_filters.js:147
-#: templates/js/translated/table_filters.js:233
+#: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
 msgid "Serial number LTE"
 msgstr "Sorozatszám <="
 
-#: templates/js/translated/table_filters.js:148
-#: templates/js/translated/table_filters.js:234
+#: templates/js/translated/table_filters.js:152
+#: templates/js/translated/table_filters.js:238
 msgid "Serial number less than or equal to"
 msgstr "Sorozatszám kisebb vagy egyenlő mint"
 
-#: templates/js/translated/table_filters.js:151
-#: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr "Sorozatszám"
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr "Batch kód"
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr "Aktív alkatrész"
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr "Aktív alkatrészek készletének megjelenítése"
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr "Az alkatrész egy gyártmány"
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr "Lefoglalt"
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr "Az tétel lefoglalásra került"
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr "Felhasználható készlet"
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr "Alhelyeken lévő készlettel együtt"
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr "Kimerült készlet tételek megjelenítése"
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr "Készleten lévő tételek megjelenítése"
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr "Gyártásban"
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr "Gyártásban lévő tételek megjelenítése"
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr "Változatokkal együtt"
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr "Alkatrészváltozatok készletével együtt"
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr "Beépítve"
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr "Másik tételbe beépült tételek mutatása"
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr "Készlet tételek melyek hozzá vannak rendelve egy vevőhöz"
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr "Készlet állapota"
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr "Van batch kódja"
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr "Követett"
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr "Követett készlet tétel sorozatszámmal vagy batch kóddal"
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr "Van beszerzési ára"
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr "Beszerzési árral rendelkező készlet tételek megjelenítése"
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr "Lejárt készlet tételek megjelenítése"
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr "Hamarosan lejáró készlet tételek megjelenítése"
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr "Teszten megfelelt"
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr "Beépített tételekkel együtt"
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr "Gyártási állapot"
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr "Hozzám rendelt"
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr "Rendelés állapota"
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr "Kintlévő"
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr "Alkategóriákkal együtt"
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr "Aktív alkatrészek megjelenítése"
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr "Elérhető"
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr "Van IPN-je"
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr "Van belső cikkszáma"
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr "Készleten"
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr "Beszerezhető"
 
diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po
index 92c8a0fa71..69558281bd 100644
--- a/InvenTree/locale/id/LC_MESSAGES/django.po
+++ b/InvenTree/locale/id/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:41\n"
 "Last-Translator: \n"
 "Language-Team: Indonesian\n"
 "Language: id_ID\n"
@@ -25,196 +25,253 @@ msgstr "API endpoint tidak ditemukan"
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "Masukkan tanggal"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr ""
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "Masukkan sandi"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "Masukkan kata sandi baru"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Konfirmasikan kata sandi"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Konfirmasi sandi baru"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr ""
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "Email (ulang)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "Konfirmasi alamat email"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr ""
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr ""
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr ""
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr ""
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr ""
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr ""
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr ""
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr ""
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr ""
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr ""
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr ""
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr ""
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr ""
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr ""
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr ""
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr ""
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr ""
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr ""
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr ""
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr ""
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr ""
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr ""
 
@@ -273,56 +330,69 @@ msgstr ""
 msgid "Must be a valid number"
 msgstr ""
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr ""
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr ""
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr ""
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr ""
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr ""
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr ""
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr ""
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr ""
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr ""
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr ""
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr ""
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr ""
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr ""
 
@@ -461,8 +531,8 @@ msgstr ""
 msgid "Returned"
 msgstr ""
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr ""
 
@@ -546,7 +616,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr ""
 
@@ -554,7 +624,7 @@ msgstr ""
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr ""
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr ""
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr ""
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr ""
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr ""
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr ""
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
@@ -646,20 +710,20 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr ""
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr ""
 msgid "Build Orders"
 msgstr ""
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr ""
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr ""
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:240
+#: build/models.py:217
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr ""
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr ""
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr ""
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr ""
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr ""
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr ""
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr ""
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr ""
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr ""
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr ""
 
@@ -1360,8 +1424,8 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr ""
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr ""
 
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1438,7 +1502,7 @@ msgstr ""
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr ""
 
@@ -1581,985 +1645,997 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr ""
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr ""
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr ""
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr ""
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr ""
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr ""
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr ""
-
 #: company/models.py:98
 msgid "Company description"
 msgstr ""
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr ""
 
@@ -2707,9 +2774,9 @@ msgstr ""
 msgid "Does this company manufacture parts?"
 msgstr ""
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr ""
 
@@ -2717,9 +2784,9 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2745,11 +2812,11 @@ msgstr ""
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr ""
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr ""
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr ""
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr ""
 
@@ -2953,14 +3020,14 @@ msgstr ""
 msgid "Download image from URL"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -2977,6 +3044,11 @@ msgstr ""
 msgid "Upload Image"
 msgstr ""
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr ""
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr ""
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr ""
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr ""
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr ""
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr ""
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr ""
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr ""
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr ""
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr ""
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr ""
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr ""
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr ""
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "Konfirmasi"
 
@@ -7542,7 +7603,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po
index b1f0198eb0..427fd3ab78 100644
--- a/InvenTree/locale/it/LC_MESSAGES/django.po
+++ b/InvenTree/locale/it/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-08 02:49\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Italian\n"
 "Language: it_IT\n"
@@ -25,196 +25,253 @@ msgstr "Endpoint API non trovato"
 msgid "Error details can be found in the admin panel"
 msgstr "I dettagli dell'errore possono essere trovati nel pannello di amministrazione"
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "Inserisci la data"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr "Note"
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "Inserire la password"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "Inserire una nuova password"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Conferma la password"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Conferma la nuova password"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr "Vecchia password"
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "Email (ancora)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "Conferma indirizzo email"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "È necessario digitare la stessa e-mail ogni volta."
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
-msgstr "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
+msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
-msgstr "Il token inserito non è valido"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
+msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr "L'URL fornito non è un file immagine valido"
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr "Seriale duplicato: {sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "Quantità inserita non valida"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "Numero seriale vuoto"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr "Range gruppo: {g}"
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "Gruppo non valido: {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr "Sequenza gruppo non valida: {g}"
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "Gruppo {group} invalido o inesistente"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "Nessun numero di serie trovato"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr "Il numero dei numeri seriali univoci ({s}) deve essere uguale alla quantità ({q})"
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "File mancante"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "Link esterno mancante"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "Allegato"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "Seleziona file da allegare"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "Collegamento"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "Link a URL esterno"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "Commento"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "Commento del file"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "Utente"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "data caricamento"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "Il nome del file non deve essere vuoto"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "Directory allegati non valida"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "Il nome del file contiene caratteri non validi '{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "Nome file estensione mancante"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "Esiste già un allegato con questo nome di file"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "Errore nella rinominazione del file"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "Scelta non valida"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr "Scelta non valida"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "Nome"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "Descrizione"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "Descrizione (opzionale)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "genitore"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr "Errore del server"
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr "Un errore è stato loggato dal server."
 
@@ -273,56 +330,69 @@ msgstr "Un errore è stato loggato dal server."
 msgid "Must be a valid number"
 msgstr "Deve essere un numero valido"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "Nome del file"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr "Valore non valido"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr "File dati"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr "Seleziona un file per il caricamento"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr "Formato file non supportato"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "File troppo grande"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr "Nessun colonna trovata nel file"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr "Nessuna riga di dati trovata nel file"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr ""
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr ""
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr "Colonna richiesta mancante: '{name}'"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "Colonna duplicata: '{col}'"
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr "Ceco"
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr "Controlli di sistema InvenTree falliti"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "In attesa"
 
@@ -461,8 +531,8 @@ msgstr "Perso"
 msgid "Returned"
 msgstr "Reso"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "Spedito"
 
@@ -546,7 +616,7 @@ msgstr "Diviso dall'elemento genitore"
 msgid "Split child item"
 msgstr "Dividi elemento figlio"
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr "Elemento stock raggruppato"
 
@@ -554,7 +624,7 @@ msgstr "Elemento stock raggruppato"
 msgid "Converted to variant"
 msgstr "Convertito in variante"
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr "Inviato al cliente"
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr "IPN deve corrispondere al modello regex {pat}"
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr "Il campo deve corrispondere con il modello {pattern}"
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr "Carattere illegale nel nome ({x})"
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr "Il sovra-valore non può essere negativo"
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr "L'eccesso non deve superare il 100%"
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
@@ -646,20 +710,20 @@ msgstr "Informazioni Su InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr "Ordine di Produzione"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr "Ordine di Produzione"
 msgid "Build Orders"
 msgstr "Ordini di Produzione"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr "Riferimento"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr ""
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "Articolo"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr "Selezionare parte da produrre"
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr "Numero di riferimento ordine di vendita"
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr "Posizione Di Origine"
 
-#: build/models.py:240
+#: build/models.py:217
 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:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr "Posizione Della Destinazione"
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr "Seleziona il luogo in cui gli articoli completati saranno immagazzinati"
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr "Quantità Produzione"
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr "Articoli completati"
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr "Stato Build"
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr "Codice Lotto"
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr "Data di creazione"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr "Data completamento obiettivo"
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr "Data di completamento"
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr "Completato da"
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr "Rilasciato da"
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr "Responsabile"
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr ""
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr ""
 msgid "External Link"
 msgstr "Collegamento esterno"
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, 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:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr "L'articolo in giacenza è sovrallocato"
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr "La quantità di assegnazione deve essere maggiore di zero"
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr "La quantità deve essere 1 per lo stock serializzato"
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr "Articolo in giacenza selezionato non trovato nel BOM"
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr "Produzione"
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr "Articoli in magazzino"
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr "Origine giacenza articolo"
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "Quantità"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr "Installa in"
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr "Destinazione articolo in giacenza"
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr "Inserisci la quantità per l'output di compilazione"
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr "La quantità deve essere maggiore di zero"
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr "Codice Seriale"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr "Inserisci i numeri di serie per gli output di compilazione (build option)"
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr "I seguenti numeri di serie sono già esistenti"
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr "Posizione"
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr "Posizione per gli output di build completati"
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr "Stato"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr "Distinta base (Bom)"
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr "L'articolo deve essere disponibile"
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Quantità disponibile ({q}) superata"
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr "Deve essere indicata l'allocazione dell'articolo"
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr "Data scadenza"
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr "In ritardo"
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr "Completato"
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr "Ordini di Vendita"
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr "Inviato da"
 
@@ -1360,8 +1424,8 @@ msgstr ""
 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:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr "Destinazione"
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr "Lotto"
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr "Creato"
 
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1438,7 +1502,7 @@ msgstr "Ordina articoli richiesti"
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr "Ordine Articoli"
 
@@ -1581,985 +1645,997 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr "Seleziona il file {name} da caricare"
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr "Valore impostazioni"
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr "Il valore specificato non è un opzione valida"
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr "Il valore deve essere un valore booleano"
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr "Il valore deve essere un intero"
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr "La stringa chiave deve essere univoca"
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr "Nessun gruppo"
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr "Riavvio richiesto"
 
-#: common/models.py:798
+#: common/models.py:805
 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:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr "Descrittore stringa per l'istanza del server"
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr "Utilizza nome istanza"
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr "Usa il nome dell'istanza nella barra del titolo"
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr "Nome azienda"
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr "Nome interno dell'azienda"
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr "URL Base"
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr "URL di base per l'istanza del server"
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr "Valuta predefinita"
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr "Valuta predefinita"
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr "Scarica dall'URL"
 
-#: common/models.py:848
+#: common/models.py:855
 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:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr "Supporto Codice A Barre"
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr "Abilita supporto scanner codici a barre"
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
+msgid "Maximum allowable download size for remote image"
+msgstr ""
+
+#: common/models.py:873
+msgid "Require confirm"
+msgstr ""
+
+#: common/models.py:874
+msgid "Require explicit user confirmation for certain action."
+msgstr ""
+
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
+msgstr "Supporto Codice A Barre"
+
+#: common/models.py:881
+msgid "Enable barcode scanner support"
+msgstr "Abilita supporto scanner codici a barre"
+
+#: common/models.py:887
+msgid "Barcode Webcam Support"
+msgstr ""
+
+#: common/models.py:888
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:868
+#: common/models.py:894
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:895
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Schema di espressione regolare per l'articolo corrispondente IPN"
 
-#: common/models.py:873
+#: common/models.py:899
 msgid "Allow Duplicate IPN"
 msgstr "Consenti duplicati IPN"
 
-#: common/models.py:874
+#: common/models.py:900
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Permetti a più articoli di condividere lo stesso IPN"
 
-#: common/models.py:880
+#: common/models.py:906
 msgid "Allow Editing IPN"
 msgstr "Permetti modifiche al part number interno (IPN)"
 
-#: common/models.py:881
+#: common/models.py:907
 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:887
+#: common/models.py:913
 msgid "Copy Part BOM Data"
 msgstr "Copia I Dati Della distinta base dell'articolo"
 
-#: common/models.py:888
+#: common/models.py:914
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:920
 msgid "Copy Part Parameter Data"
 msgstr "Copia I Dati Parametro dell'articolo"
 
-#: common/models.py:895
+#: common/models.py:921
 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:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 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:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr "Copia Template Parametri Categoria"
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr "Copia i modelli dei parametri categoria quando si crea un articolo"
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr "Gli articoli sono modelli per impostazione predefinita"
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr "Assemblaggio"
 
-#: common/models.py:923
+#: common/models.py:949
 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:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr "Componente"
 
-#: common/models.py:930
+#: common/models.py:956
 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:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr "Acquistabile"
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr "Gli articoli sono acquistabili per impostazione predefinita"
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr "Vendibile"
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr "Gli articoli sono acquistabili per impostazione predefinita"
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr "Tracciabile"
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr "Gli articoli sono tracciabili per impostazione predefinita"
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr "Virtuale"
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr "Gli articoli sono virtuali per impostazione predefinita"
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr "Mostra l'importazione nelle viste"
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr "Mostra la procedura guidata di importazione in alcune viste articoli"
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr "Mostra il prezzo nei moduli"
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr "Mostra il prezzo dell'articolo in alcuni moduli"
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr "Mostra il prezzo nella BOM"
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr "Includi le informazioni sui prezzi nelle tabelle BOM"
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr "Mostra articoli correlati"
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr "Visualizza parti correlate per ogni articolo"
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr "Crea giacenza iniziale"
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr "Crea giacenza iniziale sulla creazione articolo"
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr "Prezzi interni"
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr "Abilita prezzi interni per gli articoli"
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr "Prezzo interno come BOM-Price"
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr "Utilizzare il prezzo interno (se impostato) nel calcolo del prezzo BOM"
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr "Formato di visualizzazione del nome articolo"
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr "Formato per visualizzare il nome dell'articolo"
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr "Abilita Report di Stampa"
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr "Abilita generazione di report di stampa"
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Modalità Debug"
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Genera report in modalità debug (output HTML)"
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr "Dimensioni pagina"
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr "Dimensione predefinita della pagina per i report PDF"
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr "Abilita generazione di stampe di prova"
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr "Scadenza giacenza"
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr "Abilita funzionalità di scadenza della giacenza"
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr "Vendi giacenza scaduta"
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr "Consenti la vendita di stock scaduti"
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 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:1117
+#: common/models.py:1143
 msgid "days"
 msgstr "giorni"
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr "Controllo della proprietà della giacenza"
 
-#: common/models.py:1130
+#: common/models.py:1156
 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:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
-msgstr "Referenza ordine d'acquisto"
-
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
+msgstr ""
+
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr "Abilita password dimenticata"
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr "Abilita la funzione password dimenticata nelle pagine di accesso"
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr "Abilita registrazione"
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso"
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr "SSO abilitato"
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr "Abilita SSO nelle pagine di accesso"
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr "Email richiesta"
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione"
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr "Riempimento automatico degli utenti SSO"
 
-#: common/models.py:1196
+#: common/models.py:1220
 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:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole"
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr "Mostra le categorie sottoscritte"
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr "Mostra le categorie dei componenti sottoscritti nella homepage"
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr "Mostra ultimi articoli"
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr "Visualizzazione dell'etichetta in linea"
 
-#: common/models.py:1438
+#: common/models.py:1462
 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:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr "Visualizzazione dell'etichetta in linea"
 
-#: common/models.py:1445
+#: common/models.py:1469
 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:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr "Risultati Dell'Anteprima Di Ricerca"
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr "Prezzo"
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr "Attivo"
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr "Token"
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr "Carica file"
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr "Abbina Campi"
 
@@ -2611,15 +2687,6 @@ msgstr "Articoli importati"
 msgid "Previous Step"
 msgstr "Passaggio Precedente"
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr "URL Immagine"
-
 #: company/models.py:98
 msgid "Company description"
 msgstr "Descrizione azienda"
@@ -2630,7 +2697,7 @@ msgstr "Descrizione dell'azienda"
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr "Sito Web"
 
@@ -2707,9 +2774,9 @@ msgstr "è un produttore"
 msgid "Does this company manufacture parts?"
 msgstr ""
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr "Valuta"
 
@@ -2717,9 +2784,9 @@ msgstr "Valuta"
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr "Articolo di base"
 
@@ -2731,11 +2798,11 @@ msgstr "Seleziona articolo"
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr "Produttore"
 
@@ -2745,11 +2812,11 @@ msgstr "Seleziona Produttore"
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr "Codice articolo produttore (MPN)"
 
@@ -2778,8 +2845,8 @@ msgstr "Nome parametro"
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr "Valore"
@@ -2791,7 +2858,7 @@ msgstr "Valore del parametro"
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr "Unità"
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo"
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr "Fornitore"
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr "Seleziona fornitore"
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr "Descrizione articolo fornitore"
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr "Nota"
 
@@ -2860,7 +2927,7 @@ msgstr "Onere minimo (ad esempio tassa di stoccaggio)"
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr "Confezionamento"
 
@@ -2879,10 +2946,10 @@ msgstr "Ordine multiplo"
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr "Disponibile"
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr "Valuta predefinita utilizzata per questo fornitore"
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr "Codice valuta"
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr "Azienda"
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr "Crea ordine d'acquisto"
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr "Modifica le informazioni dell'azienda"
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr "Modifica azienda"
 
@@ -2953,14 +3020,14 @@ msgstr "Carica nuova immagine"
 msgid "Download image from URL"
 msgstr "Scarica immagine dall'URL"
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr "Cliente"
 
@@ -2977,6 +3044,11 @@ msgstr "Telefono"
 msgid "Upload Image"
 msgstr "Carica immagine"
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr "Download Immagine"
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr "Elenco dei fornitori"
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr "Articoli ordinati"
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr "Elimina articolo fornitore"
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr "Elimina"
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr "Articolo Fornitore"
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr "Modifica fornitore articolo"
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr "Prezzi"
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr "Articoli in magazzino"
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr "Nuovo Fornitore"
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr "Nuovo Produttore"
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr "Clienti"
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr "Nuovo cliente"
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr "Aziende"
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr "Nuova Azienda"
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr "Download Immagine"
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr "La dimensione dell'immagine supera la dimensione massima consentita per il download"
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr "Risposta non valida: {code}"
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr "L'URL fornito non è un file immagine valido"
-
 #: label/models.py:102
 msgid "Label name"
 msgstr "Nome etichetta"
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr "Filtri"
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr "Descrizione ordine"
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr "Creato Da"
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr "Utente o gruppo responsabile di questo ordine"
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr "Note ordine"
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr "Riferimento ordine"
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr "Stato ordine d'acquisto"
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr "Azienda da cui sono stati ordinati gli articoli"
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr "Riferimento fornitore"
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr "Codice di riferimento ordine fornitore"
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr "ricevuto da"
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr "Data di emissione"
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr "Data di emissione ordine"
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr "Data di consegna programmata"
 
-#: order/models.py:318
+#: order/models.py:281
 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:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr "Data ordine completato"
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr "Articolo Fornitore"
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr "La quantità di ripartizione non puo' superare la disponibilità della giacenza"
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr "La quantità di ripartizione non puo' superare la disponibilità della giacenza"
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr "Inserisci la quantità assegnata alla giacenza"
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr "Seleziona la posizione di destinazione per gli elementi ricevuti"
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr "La destinazione deve essere specificata"
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr "Emesso"
 
@@ -3996,10 +4051,10 @@ msgstr "Seleziona l'articolo del fornitore"
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr "Giacenze Totali"
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr "Disponibilità in magazzino"
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr "Ordinato"
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr "Digita la quantità per il calcolo del prezzo"
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr "Consenti Le Varianti"
 
@@ -4624,7 +4680,7 @@ msgstr "Consenti Le Varianti"
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr "Percorso Categoria"
 msgid "Top level part category"
 msgstr "Categoria articolo di livello superiore"
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr "Sottocategorie"
@@ -4837,7 +4893,7 @@ msgstr "Articoli (incluse le sottocategorie)"
 msgid "Create new part"
 msgstr "Crea nuovo articolo"
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr "Nuovo articolo"
 
@@ -4862,19 +4918,19 @@ msgstr "Stampa Etichette"
 msgid "Part Parameters"
 msgstr "Parametri articolo"
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr "Crea Categoria Articolo"
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr "Crea Articolo"
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr "Inattivo"
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr "In magazzino"
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr "Costo Totale"
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr "Database sconosciuto"
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr "Data"
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr "Seriale"
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr "Seleziona Owner"
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr "Articolo base"
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr "Posizione magazzino di destinazione"
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr "Numeri di serie già esistenti"
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr "Nessuna posizione impostata"
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr "Ultimo aggiornamento"
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr "Conferma l'indirizzo e-mail"
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "Conferma"
 
@@ -7542,7 +7603,7 @@ msgstr "Aggiungi allegato"
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr "Quantità richiesta"
 
@@ -7610,22 +7671,6 @@ msgstr "Quantità minima"
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr "Il server remoto deve essere accessibile"
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr "L'immagine remota non deve superare la dimensione massima consentita del file"
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr "Modifica allegato"
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr "Chiudi"
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr "Formato"
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr "La distinta base contiene articoli tracciabili"
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr "Posizione non specificata"
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr "Modifica allocazione magazzino"
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr "Elimina posizione giacenza"
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr "Modifica Posizione"
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr "Rimuovi Posizione"
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "Seleziona Articoli"
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr "Specificare il quantitativo assegnato allo stock"
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr "Seleziona la posizione di origine (lascia vuoto per prendere da tutte le posizioni)"
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr "Nessuna posizione di magazzino corrispondente"
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr "Aggiungi fornitore"
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr "Aggiungi fornitore articolo"
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr "Tutte gli articoli del fornitore selezionati saranno eliminati"
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr "Fornitori articoli"
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr "Elimina Parametri"
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr "Modifica parametro"
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr "Elimina il parametro"
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr "Modifica parametro"
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr "Elimina Parametri"
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr "Nessun fornitore trovato"
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr "Modifica articolo fornitore"
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr "Elimina articolo fornitore"
 
@@ -8419,61 +8468,61 @@ msgstr "Cancella tutti i filtri"
 msgid "Create filter"
 msgstr "Crea filtro"
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr "Azione Vietata"
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr "Crea operazione non consentita"
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr "Operazione di aggiornamento non consentita"
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr "Operazione di eliminazione non consentita"
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr "Mostra operazione non consentita"
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr "Inserisci un numero valido"
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr "Nessun risultato trovato"
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr "Ricerca"
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr "Cancella input"
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr "ID Posizione"
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr "ID Ordine"
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr "Id Categoria"
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr "ID articolo produttore"
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr "Aggiungi cliente"
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr "Quantità da ricevere"
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr "Stato giacenza"
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr "Codice ordine"
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr "Ordinato"
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr "Totale"
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr "Prezzo Unitario"
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr "Prezzo Totale"
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr "Cliente non valido"
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr "Conferma l'assegnazione della giacenza"
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr "Nessun ordine di vendita trovato"
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr "Modifica posizione giacenza"
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr "Conferma Operazione Eliminazione"
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr "Elimina posizione giacenza"
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr "Spedito al cliente"
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr "Nessun posizione specificata"
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr "Prezzo d'acquisto"
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr "Calcola il prezzo"
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr "In esaurimento"
 
@@ -9243,11 +9292,11 @@ msgstr "Parte vendibile"
 msgid "No variants found"
 msgstr "Nessuna variante trovata"
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr "Elimina relazione tra i componenti"
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr "Nessuna categoria"
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr "Visualizza come elenco"
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr "Visualizza come struttura ad albero"
 
@@ -9296,7 +9345,7 @@ msgstr "Visualizza come struttura ad albero"
 msgid "Subscribed category"
 msgstr "Categoria sottoscritta"
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr "Percorso"
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr "Esaurito"
 
@@ -9727,95 +9776,95 @@ msgstr "Esaurito"
 msgid "Stocktake"
 msgstr "Inventario"
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr "La posizione non esiste più"
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr "Aggiunto"
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr "Rimosso"
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr "Convalidato"
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr "Includi sottoallocazioni/posizioni"
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr "Includi posizioni"
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr "Includi sottocategorie"
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr "Sottoscritto"
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr "Codice Lotto"
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr "Elementi attivi"
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr "L'elemento è stato posizionato"
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr "Includi elementi in giacenza nelle sottoallocazioni"
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr "Mostra gli elementi che sono in giacenza"
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr "In Produzione"
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr "Mostra gli elementi in produzione"
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr "Includi Varianti"
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr "Includi gli articoli stock per le varianti degli articoli"
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr "Installato"
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr "Mostra gli elementi stock che sono installati in un altro elemento"
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr "Mostra elementi che sono stati assegnati a un cliente"
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr "Stato magazzino"
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr "Ha il prezzo d'acquisto"
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr "Mostra gli articoli di magazzino che hanno un prezzo di acquisto impostato"
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr "Mostra gli elementi in giacenza scaduti"
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr "Mostra giacenza prossima alla scadenza"
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr "Stato Build"
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr "Stato dell'ordine"
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr "In Sospeso"
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr "Includi articoli nelle sottocategorie"
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr "Visualizza articoli attivi"
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr "Ha IPN"
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr "L'articolo possiede un part number interno"
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr "Acquistabile"
 
diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po
index 171ccb1923..bd25c7a10d 100644
--- a/InvenTree/locale/ja/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ja/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Japanese\n"
 "Language: ja_JP\n"
@@ -25,196 +25,253 @@ msgstr "APIエンドポイントが見つかりません"
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "日付を入力する"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr "メモ"
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "パスワードを入力してください"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "新しいパスワードを入力してください。"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "パスワードの確認"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "新しいパスワードの確認"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr ""
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "メールアドレス(確認用)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "メールアドレスの確認"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "毎回同じメールアドレスを入力する必要があります。"
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr "重複したシリアル番号: {sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "数量コードが無効です"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "シリアル番号は空です"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "無効なグループ: {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "{group} は無効なグループか、存在しません。"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "シリアル番号が見つかりません"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "ファイルがありません"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "外部リンクが見つかりません。"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "添付ファイル"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "添付ファイルを選択"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "リンク"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "外部 サイト へのリンク"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "コメント:"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "ファイルコメント"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "ユーザー"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "アップロード日時"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "ファイル名は空欄にできません"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "添付ファイルのディレクトリが正しくありません"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "ファイル名に無効な文字'{c}'が含まれています"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "ファイル名に拡張子がありません"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "この名前の貼付ファイルは既に存在します"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "ファイル名の変更に失敗しました"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "無効な選択です"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr "無効な選択です"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "お名前"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "説明"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "説明 (オプション)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "親"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr ""
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr ""
 
@@ -273,56 +330,69 @@ msgstr ""
 msgid "Must be a valid number"
 msgstr "有効な数字でなければなりません"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "ファイル名"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr "無効な値です。"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr "データファイル"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr "アップロードするファイルを選択"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr "サポートされていないファイル形式"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "ファイルサイズが大きすぎます"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr "ファイルに列が見つかりません"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr "ファイルにデータ行がみつかりません"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr "データが入力されていません"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr "データ列が指定されていません"
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr "必須の列がありません: {name}"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "{col} 列が重複しています。"
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr ""
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr "InvenTree システムのヘルスチェックに失敗しました"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "処理待ち"
 
@@ -461,8 +531,8 @@ msgstr "紛失"
 msgid "Returned"
 msgstr "返品済"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "発送済み"
 
@@ -546,7 +616,7 @@ msgstr "親アイテムから分割する"
 msgid "Split child item"
 msgstr "子項目を分割"
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr "商品在庫をマージしました"
 
@@ -554,7 +624,7 @@ msgstr "商品在庫をマージしました"
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr "顧客に送信されました"
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr ""
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr ""
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr "名前の一部に不正な文字が使用されています({x})"
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr ""
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr ""
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
@@ -646,20 +710,20 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr ""
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr ""
 msgid "Build Orders"
 msgstr ""
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr ""
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "パーツ"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:240
+#: build/models.py:217
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr "作成日時"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr ""
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr "パーツを割り当てるためにビルドする"
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr "在庫商品"
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "数量"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr ""
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr ""
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr ""
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr ""
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr "ステータス"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr ""
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr ""
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr ""
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr ""
 
@@ -1360,8 +1424,8 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr ""
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr ""
 
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1438,7 +1502,7 @@ msgstr "注文必須パーツ"
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr "パーツの注文"
 
@@ -1581,985 +1645,997 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr ""
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr ""
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr ""
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr ""
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr ""
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr "テンプレート"
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr "パーツはデフォルトのテンプレートです"
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr "アセンブリ"
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます"
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr "コンポーネント"
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr "パーツはデフォルトでサブコンポーネントとして使用できます"
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr "購入可能"
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr "パーツはデフォルトで購入可能です"
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr "パーツはデフォルトで販売可能です"
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr "追跡可能"
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr "パーツはデフォルトで追跡可能です"
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "デバッグモード"
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr "メッセージ ID:"
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr ""
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr ""
-
 #: company/models.py:98
 msgid "Company description"
 msgstr ""
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr ""
 
@@ -2707,9 +2774,9 @@ msgstr ""
 msgid "Does this company manufacture parts?"
 msgstr ""
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr ""
 
@@ -2717,9 +2784,9 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2745,11 +2812,11 @@ msgstr ""
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr ""
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr ""
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr ""
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr ""
 
@@ -2953,14 +3020,14 @@ msgstr ""
 msgid "Download image from URL"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -2977,6 +3044,11 @@ msgstr ""
 msgid "Upload Image"
 msgstr ""
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr ""
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr ""
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr "パーツの注文"
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr "メーカー・パーツの編集"
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr "メーカー・パーツを削除"
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr ""
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr ""
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr ""
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr ""
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr ""
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr ""
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr ""
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr ""
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr ""
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr ""
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr "購入金額"
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr ""
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr "新規パーツ"
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr "続けて別のパーツを作る"
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr "期限切れ"
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "確認"
 
@@ -7542,7 +7603,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr "メーカー・パーツの編集"
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po
index 6235d4586e..2d5233255c 100644
--- a/InvenTree/locale/ko/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ko/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Korean\n"
 "Language: ko_KR\n"
@@ -25,196 +25,253 @@ msgstr ""
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr ""
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr ""
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "비밀번호를 입력하세요"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "새로운 비밀번호를 입력하세요"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "비밀번호 확인"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "새 비밀번호 확인"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr ""
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "이메일 (다시 입력)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "이메일 주소 확인"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr ""
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr ""
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr ""
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "첨부파일"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "첨부할 파일을 선택하세요"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "링크"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "외부 URL로 링크"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr ""
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "사용자"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "업로드 날짜"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "파일명은 비워둘 수 없습니다"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr ""
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "파일명에 허용되지 않은 문자 '{c}'가 포함되어 있습니다"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr ""
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "같은 이름의 첨부파일이 이미 존재합니다"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "파일 이름 바꾸기 오류"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr ""
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "이름"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "설명"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "설명 (선택 사항)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr ""
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr ""
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr ""
 
@@ -273,56 +330,69 @@ msgstr ""
 msgid "Must be a valid number"
 msgstr "유효한 숫자여야 합니다"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "파일명"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr ""
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr ""
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr ""
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr ""
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "파일이 너무 큽니다"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr ""
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr ""
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr ""
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr ""
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr "체코어"
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr ""
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr ""
 
@@ -461,8 +531,8 @@ msgstr ""
 msgid "Returned"
 msgstr ""
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr ""
 
@@ -546,7 +616,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr ""
 
@@ -554,7 +624,7 @@ msgstr ""
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr ""
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr ""
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr ""
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr ""
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr ""
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr ""
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
@@ -646,20 +710,20 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr ""
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr ""
 msgid "Build Orders"
 msgstr ""
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr ""
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr ""
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:240
+#: build/models.py:217
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr ""
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr ""
 msgid "External Link"
 msgstr "외부 링크"
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "수량"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr ""
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr ""
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr "수량 값은 0보다 커야 합니다"
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr "일련번호"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr ""
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr "위치"
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr "상태"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr ""
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr ""
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr ""
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr ""
 
@@ -1360,8 +1424,8 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr ""
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr ""
 
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1438,7 +1502,7 @@ msgstr ""
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr ""
 
@@ -1581,985 +1645,997 @@ msgstr "{name.title()} 파일"
 msgid "Select {name} file to upload"
 msgstr "업로드할 {name} 파일을 선택하세요"
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr ""
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr "재시작 필요"
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr "회사명"
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr "기본 통화"
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr "기본 통화"
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr "URL에서 다운로드"
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr "바코드 지원"
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr ""
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
-msgstr ""
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
+msgstr "바코드 지원"
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr ""
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr ""
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr "구입 가능"
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr "판매 가능"
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "디버그 모드"
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr "페이지 크기"
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr "PDF 보고서 기본 페이지 크기"
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr "SSO 활성화"
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr "로그인 페이지에서 SSO 활성화"
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr "이메일 필요"
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr "두 번 보내기"
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr "파일 업로드"
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr "이미지 URL"
-
 #: company/models.py:98
 msgid "Company description"
 msgstr "회사 소개"
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr "웹사이트"
 
@@ -2707,9 +2774,9 @@ msgstr ""
 msgid "Does this company manufacture parts?"
 msgstr ""
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr ""
 
@@ -2717,9 +2784,9 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2745,11 +2812,11 @@ msgstr ""
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr ""
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr "회사"
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr ""
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr "회사 정보 수정"
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr "회사 수정"
 
@@ -2953,14 +3020,14 @@ msgstr "새 이미지 업로드"
 msgid "Download image from URL"
 msgstr "URL에서 이미지 다운로드"
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr "고객"
 
@@ -2977,6 +3044,11 @@ msgstr "전화번호"
 msgid "Upload Image"
 msgstr "이미지 업로드"
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr "이미지 다운로드"
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr ""
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr "삭제"
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr ""
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr ""
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr ""
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr ""
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr ""
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr "신규 고객"
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr ""
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr "새 회사"
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr "이미지 다운로드"
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr ""
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr "바코드 해시"
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr "이미 사용 중인 바코드입니다"
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr ""
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr "일련번호"
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr "일련번호가 이미 존재합니다"
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "확인"
 
@@ -7542,7 +7603,7 @@ msgstr "첨부파일 추가"
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr "선택"
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr "단가"
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr "부품 명세서 복사"
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr "일련번호"
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po
index 5e3af5b4e9..ce983f2c77 100644
--- a/InvenTree/locale/nl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/nl/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Dutch\n"
 "Language: nl_NL\n"
@@ -25,196 +25,253 @@ msgstr "API eindpunt niet gevonden"
 msgid "Error details can be found in the admin panel"
 msgstr "Error details kunnen worden gevonden in het admin scherm"
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "Voer datum in"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr "Opmerkingen"
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "Voer wachtwoord in"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "Voer een nieuw wachtwoord in"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Wachtwoord bevestigen"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Nieuw wachtwoord bevestigen"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr "Oude wachtwoord"
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "E-mailadres (opnieuw)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "E-mailadres bevestiging"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "Er moet hetzelfde e-mailadres ingevoerd worden."
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
-msgstr "Token"
-
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
+msgstr ""
+
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr "Opgegeven URL is geen geldig afbeeldingsbestand"
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr "Duplicaat serienummer: {sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "Ongeldige hoeveelheid ingevoerd"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "Leeg serienummer"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr "Ongeldig groepsbereik: {g}"
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "Ongeldige groep: {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr "Ongeldig groepsbereik: {g}"
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "Ongeldige/geen groep {group}"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "Geen serienummers gevonden"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr "Hoeveelheid van unieke serienummers ({s}) moet overeenkomen met de hoeveelheid ({q})"
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "Ontbrekend bestand"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "Externe link ontbreekt"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "Bijlage"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "Bestand als bijlage selecteren"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "Link"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "Link naar externe URL"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "Opmerking"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "Bestand opmerking"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "Gebruiker"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "uploaddatum"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "Bestandsnaam mag niet leeg zijn"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "Foute bijlagemap"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "Bestandsnaam bevat illegale teken '{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "Bestandsnaam mist extensie"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "Bijlage met deze bestandsnaam bestaat al"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "Fout bij hernoemen bestand"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "Ongeldige keuze"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr "Ongeldige keuze"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "Naam"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "Omschrijving"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "Omschrijving (optioneel)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "bovenliggende"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr "Serverfout"
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr "Er is een fout gelogd door de server."
 
@@ -273,56 +330,69 @@ msgstr "Er is een fout gelogd door de server."
 msgid "Must be a valid number"
 msgstr "Moet een geldig nummer zijn"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "Bestandsnaam"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr "Ongeldige waarde"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr "Data bestand"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr "Selecteer een bestand om te uploaden"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr "Niet ondersteund bestandstype"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "Bestand is te groot"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr "Geen kolommen gevonden in het bestand"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr "Geen data rijen gevonden in dit bestand"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr "Geen data rijen opgegeven"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr "Geen gegevenskolommen opgegeven"
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr "Verplichte kolom ontbreekt: '{name}'"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "Dubbele kolom: '{col}'"
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr "URL"
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr "Tsjechisch"
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr "InvenTree gezondsheidschecks mislukt"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "Bezig"
 
@@ -461,8 +531,8 @@ msgstr "Kwijt"
 msgid "Returned"
 msgstr "Retour"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "Verzonden"
 
@@ -546,7 +616,7 @@ msgstr "Splits van bovenliggend item"
 msgid "Split child item"
 msgstr "Splits onderliggende item"
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr "Samengevoegde voorraadartikelen"
 
@@ -554,7 +624,7 @@ msgstr "Samengevoegde voorraadartikelen"
 msgid "Converted to variant"
 msgstr "Geconverteerd naar variant"
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr "Naar klant verzonden"
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr "IPN moet overeenkomen met regex-patroon {pat}"
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr "Referentie moet overeenkomen met patroon {pattern}"
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr "Illegaal teken in naam ({x})"
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr "Overschotwaarde mag niet negatief zijn"
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr "Overschot mag niet groter zijn dan 100%"
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr "Ongeldige waarde voor overschot"
 
@@ -646,20 +710,20 @@ msgstr "Over InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Productie moet geannuleerd worden voordat het kan worden verwijderd"
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr "Ongeldige keuze voor bovenliggende productie"
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr "Productieopdracht"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr "Productieopdracht"
 msgid "Build Orders"
 msgstr "Productieopdrachten"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr "Productieopdracht Referentie"
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr "Referentie"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr "Korte beschrijving van de productie"
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Bovenliggende Productie"
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr "Productieopdracht waar dit productie aan is toegewezen"
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "Onderdeel"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr "Selecteer onderdeel om te produceren"
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr "Verkooporder Referentie"
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr "Verkooporder waar deze productie aan is toegewezen"
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr "Bronlocatie"
 
-#: build/models.py:240
+#: build/models.py:217
 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:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr "Bestemmings Locatie"
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr "Selecteer locatie waar de voltooide items zullen worden opgeslagen"
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr "Productiehoeveelheid"
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr "Aantal voorraaditems om te produceren"
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr "Voltooide voorraadartikelen"
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr "Aantal voorraadartikelen die zijn voltooid"
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr "Productiestatus"
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr "Productiestatuscode"
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr "Batchcode"
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr "Batchcode voor deze productieuitvoer"
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr "Aanmaakdatum"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr "Verwachte opleveringsdatum"
 
-#: build/models.py:286
+#: build/models.py:263
 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:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr "Opleveringsdatum"
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr "voltooid door"
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr "Uitgegeven door"
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr "Gebruiker die de productie-opdracht heeft gegeven"
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr "Verantwoordelijke"
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr "Gebruiker verantwoordelijk voor deze productieopdracht"
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr "Gebruiker verantwoordelijk voor deze productieopdracht"
 msgid "External Link"
 msgstr "Externe Link"
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr "Opmerkingen over de productie"
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr "Geen productie uitvoer opgegeven"
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr "Productie uitvoer is al voltooid"
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr "Product komt niet overeen met de Productieopdracht"
 
-#: build/models.py:1162
+#: build/models.py:1143
 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:1171
+#: build/models.py:1152
 #, 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:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr "Voorraad item is te veel toegewezen"
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr "Toewijzing hoeveelheid moet groter zijn dan nul"
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Hoeveelheid moet 1 zijn voor geserialiseerde voorraad"
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr "Geselecteerd voorraadartikel niet gevonden in stuklijst"
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr "Product"
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr "Product om onderdelen toe te wijzen"
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr "Voorraadartikel"
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr "Bron voorraadartikel"
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "Hoeveelheid"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr "Voorraad hoeveelheid toe te wijzen aan productie"
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr "Installeren in"
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr "Bestemming voorraadartikel"
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr "Productieuitvoer"
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr "Productieuitvoer komt niet overeen met de bovenliggende productie"
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr "Uitvoeronderdeel komt niet overeen met productieorderonderdeel"
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr "Deze productieuitvoer is al voltooid"
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr "Deze productieuitvoer is niet volledig toegewezen"
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr "Voer hoeveelheid in voor productie uitvoer"
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr "Hoeveelheid moet groter zijn dan nul"
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen"
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 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:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr "Serienummers"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr "Voer serienummers in voor productieuitvoeren"
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr "Serienummers automatisch toewijzen"
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Vereiste artikelen automatisch toewijzen met overeenkomende serienummers"
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr "De volgende serienummers bestaan al"
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr "Een lijst van productieuitvoeren moet worden verstrekt"
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr "Locatie"
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr "Locatie van voltooide productieuitvoeren"
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr "Status"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr "Incomplete Toewijzing Accepteren"
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr "Voltooi de uitvoer als de voorraad niet volledig is toegewezen"
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr "Toegewezen Voorraad Verwijderen"
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr "Verminder alle voorraad die al is toegewezen aan deze productie"
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr "Verwijder Incomplete Uitvoeren"
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr "Verwijder alle productieuitvoeren die niet zijn voltooid"
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr "Accepteer Niet-toegewezen"
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr "Accepteer dat voorraadartikelen niet volledig zijn toegewezen aan deze productieorder"
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr "Vereiste voorraad is niet volledig toegewezen"
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr "Accepteer Onvolledig"
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr "Accepteer dat het vereist aantal productieuitvoeren niet is voltooid"
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr "Vereiste productiehoeveelheid is voltooid"
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr "Productieorder heeft onvolledige uitvoeren"
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr "Er zijn geen productuitvoeren aangemaakt voor deze productieorder"
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr "Stuklijstartikel"
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr "Productieuitvoer"
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr "Productieuitvoer moet naar dezelfde productie wijzen"
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr "bom_item.part moet naar hetzelfde onderdeel wijzen als de productieorder"
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr "Artikel moet op voorraad zijn"
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Beschikbare hoeveelheid ({q}) overschreden"
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr "Productieuitvoer moet worden opgegeven voor de toewijzing van gevolgde onderdelen"
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 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:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr "Dit voorraadartikel is al toegewezen aan deze productieoutput"
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr "Allocaties voor artikelen moeten worden opgegeven"
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr "Voorraadlocatie waar onderdelen afkomstig zijn (laat leeg om van elke locatie te nemen)"
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr "Locatie uitsluiten"
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr "Voorraadartikelen van deze geselecteerde locatie uitsluiten"
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr "Uitwisselbare voorraad"
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr "Voorraadartikelen op meerdere locaties kunnen uitwisselbaar worden gebruikt"
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr "Vervangende Voorraad"
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr "Toewijzing van vervangende onderdelen toestaan"
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "Voorraad is niet volledig toegewezen aan deze productieopdracht"
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr "Streefdatum"
 
@@ -1303,35 +1367,35 @@ msgstr "Deze productie was verwacht op %(target)s"
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr "Achterstallig"
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr "Voltooid"
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr "Verkooporder"
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr "Uitgegeven door"
 
@@ -1360,8 +1424,8 @@ 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:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr "Bestemming"
 
@@ -1375,19 +1439,19 @@ msgstr "Toegewezen Onderdelen"
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr "Batch"
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr "Gecreëerd"
 
@@ -1407,7 +1471,7 @@ msgstr "Onderliggende Productieorders"
 msgid "Allocate Stock to Build"
 msgstr "Voorraad toewijzen aan Product"
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr "Voorraadtoewijzing ongedaan maken"
 
@@ -1438,7 +1502,7 @@ msgstr "Vereiste onderdelen bestellen"
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr "Onderdelen bestellen"
 
@@ -1581,985 +1645,997 @@ msgstr "{name.title()} Bestand"
 msgid "Select {name} file to upload"
 msgstr "Kies {name} bestand om te uploaden"
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig)"
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr "Instellingswaarde"
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr "Gekozen waarde is geen geldige optie"
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr "Waarde moet een booleaanse waarde zijn"
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr "Waarde moet een geheel getal zijn"
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr "Sleutelreeks moet uniek zijn"
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr "Geen groep"
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr "Opnieuw opstarten vereist"
 
-#: common/models.py:798
+#: common/models.py:805
 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:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr "ID Serverinstantie"
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr "Stringbeschrijving voor de server instantie"
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr "Gebruik de instantie naam"
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr "Gebruik de naam van de instantie in de titelbalk"
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr "Tonen `over` beperken"
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr "Bedrijfsnaam"
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr "Interne bedrijfsnaam"
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr "Basis-URL"
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr "Basis URL voor serverinstantie"
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr "Standaard Valuta"
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr "Standaard valuta"
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr "Download van URL"
 
-#: common/models.py:848
+#: common/models.py:855
 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:854 templates/InvenTree/settings/sidebar.html:33
+#: common/models.py:861
+msgid "Download Size Limit"
+msgstr ""
+
+#: common/models.py:862
+msgid "Maximum allowable download size for remote image"
+msgstr ""
+
+#: common/models.py:873
+msgid "Require confirm"
+msgstr ""
+
+#: common/models.py:874
+msgid "Require explicit user confirmation for certain action."
+msgstr ""
+
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
 msgid "Barcode Support"
 msgstr "Streepjescodeondersteuning"
 
-#: common/models.py:855
+#: common/models.py:881
 msgid "Enable barcode scanner support"
 msgstr "Streepjescodescanner ondersteuning inschakelen"
 
-#: common/models.py:861
+#: common/models.py:887
 msgid "Barcode Webcam Support"
 msgstr "Barcode Webcam Ondersteuning"
 
-#: common/models.py:862
+#: common/models.py:888
 msgid "Allow barcode scanning via webcam in browser"
 msgstr "Barcode via webcam scannen in browser toestaan"
 
-#: common/models.py:868
+#: common/models.py:894
 msgid "IPN Regex"
 msgstr "IPN Regex"
 
-#: common/models.py:869
+#: common/models.py:895
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Regulier expressiepatroon voor het overeenkomende Onderdeel IPN"
 
-#: common/models.py:873
+#: common/models.py:899
 msgid "Allow Duplicate IPN"
 msgstr "Duplicaat IPN toestaan"
 
-#: common/models.py:874
+#: common/models.py:900
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken"
 
-#: common/models.py:880
+#: common/models.py:906
 msgid "Allow Editing IPN"
 msgstr "Bewerken IPN toestaan"
 
-#: common/models.py:881
+#: common/models.py:907
 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:887
+#: common/models.py:913
 msgid "Copy Part BOM Data"
 msgstr "Kopieer Onderdeel Stuklijstgegevens"
 
-#: common/models.py:888
+#: common/models.py:914
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Kopieer standaard stuklijstgegevens bij het dupliceren van een onderdeel"
 
-#: common/models.py:894
+#: common/models.py:920
 msgid "Copy Part Parameter Data"
 msgstr "Kopieer Onderdeel Parametergegevens"
 
-#: common/models.py:895
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr "Parametergegevens standaard kopiëren bij het dupliceren van een onderdeel"
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr "Kopieer Onderdeel Testdata"
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr "Testdata standaard kopiëren bij het dupliceren van een onderdeel"
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr "Kopiëer Categorieparameter Sjablonen"
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr "Kopieer categorieparameter sjablonen bij het aanmaken van een onderdeel"
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr "Sjabloon"
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr "Onderdelen zijn standaard sjablonen"
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr "Samenstelling"
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr "Onderdelen kunnen standaard vanuit andere componenten worden samengesteld"
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr "Component"
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr "Onderdelen kunnen standaard worden gebruikt als subcomponenten"
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr "Koopbaar"
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr "Onderdelen kunnen standaard gekocht worden"
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr "Verkoopbaar"
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr "Onderdelen kunnen standaard verkocht worden"
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr "Volgbaar"
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr "Onderdelen kunnen standaard gevolgd worden"
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr "Virtueel"
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr "Onderdelen zijn standaard virtueel"
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr "Toon Import in Weergaven"
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr "Toon de importwizard in sommige onderdelenweergaven"
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr "Toon Prijs in Formulieren"
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr "Toon onderdeelprijs in sommige formulieren"
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr "Prijs in Stuklijst Weergeven"
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr "Prijsinformatie in Stuklijsttabellen opnemen"
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr "Toon Prijsgeschiedenis"
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr "Toon historische prijzen voor Onderdeel"
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr "Verwante onderdelen tonen"
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr "Verwante onderdelen voor een onderdeel tonen"
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr "Eerste voorraad aanmaken"
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr "Aanmaken eerste voorraad bij het maken van onderdeel"
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr "Interne Prijzen"
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr "Inschakelen van interne prijzen voor onderdelen"
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr "Interne Prijs als Stuklijst Prijs"
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr "Gebruik de interne prijs (indien ingesteld) in stuklijst prijsberekeningen"
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr "Onderdelennaam Weergaveopmaak"
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr "Opmaak om de onderdeelnaam weer te geven"
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr "Printen van labels Inschakelen"
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr "Printen van labels via de webinterface inschakelen"
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr "Label Afbeelding DPI"
 
-#: common/models.py:1046
+#: common/models.py:1072
 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:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr "Activeer Rapportages"
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr "Activeer het genereren van rapporten"
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Foutopsporingsmodus"
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Rapporten genereren in debug modus (HTML uitvoer)"
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr "Paginagrootte"
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr "Standaard paginagrootte voor PDF rapporten"
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr "Activeer Testrapporten"
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr "Activeer het genereren van testrapporten"
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr "Testrapporten Toevoegen"
 
-#: common/models.py:1088
+#: common/models.py:1114
 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:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr "Batchcode Sjabloon"
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr "Sjabloon voor het genereren van standaard batchcodes voor voorraadartikelen"
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr "Verlopen Voorraad"
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr "Verlopen voorraad functionaliteit inschakelen"
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr "Verkoop Verlopen Voorraad"
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr "Verkoop verlopen voorraad toestaan"
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr "Voorraad Vervaltijd"
 
-#: common/models.py:1115
+#: common/models.py:1141
 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:1117
+#: common/models.py:1143
 msgid "days"
 msgstr "dagen"
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr "Produceer Verlopen Voorraad"
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr "Sta productie met verlopen voorraad toe"
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr "Voorraad Eigenaar Toezicht"
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr "Eigenaarstoezicht over voorraadlocaties en items inschakelen"
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
-msgstr "Productieopdracht Referentie Prefix"
-
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
-msgstr "Prefix voor productieopdracht referentie"
-
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
-msgstr "Productieopdracht Referentie Regex"
-
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1153
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
+msgstr ""
+
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr "Wachtwoord vergeten functie inschakelen"
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr "Wachtwoord vergeten functie inschakelen op de inlogpagina's"
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr "Registratie inschakelen"
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr "Zelfregistratie voor gebruikers op de inlogpagina's inschakelen"
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr "SSO inschakelen"
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr "SSO inschakelen op de inlogpagina's"
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr "E-mailadres verplicht"
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr "Vereis gebruiker om e-mailadres te registreren bij aanmelding"
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr "E-mail twee keer"
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr "Laat gebruikers twee keer om hun wachtwoord vragen tijdens het aanmelden"
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr "Groep bij aanmelding"
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr "Groep waaraan nieuwe gebruikers worden toegewezen bij registratie"
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr "MFA afdwingen"
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr "Gebruikers moeten multifactor-beveiliging gebruiken."
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr "Controleer plugins bij het opstarten"
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr "Activeer URL-integratie"
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig"
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr "Toon laatste onderdelen"
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr "Toon laatste onderdelen op de startpagina"
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr "Recente Voorraadtelling"
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr "Toon recente voorraadwijzigingen"
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr "Toon recent aangepaste voorraadartikelen op de startpagina"
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr "Recente Voorraadtelling"
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr "Toon lage voorraad"
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr "Toon lage voorraad van artikelen op de startpagina"
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr "Toon lege voorraad"
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr "Toon lege voorraad van artikelen op de startpagina"
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr "Toon benodigde voorraad"
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Toon benodigde voorraad van artikelen voor productie op de startpagina"
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr "Toon verlopen voorraad"
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr "Toon verlopen voorraad van artikelen op de startpagina"
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr "Toon verouderde voorraad"
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr "Toon verouderde voorraad van artikelen op de startpagina"
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr "Toon openstaande producties"
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr "Toon openstaande producties op de startpagina"
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr "Toon achterstallige productie"
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr "Toon achterstallige producties op de startpagina"
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr "Toon uitstaande PO's"
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr "Toon uitstaande PO's op de startpagina"
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr "Toon achterstallige PO's"
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr "Toon achterstallige PO's op de startpagina"
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr "Toon uitstaande SO's"
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr "Toon uitstaande SO's op de startpagina"
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr "Toon achterstallige SO's"
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr "Toon achterstallige SO's op de startpagina"
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr "Zoek Onderdelen"
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr "Inactieve Onderdelen Verbergen"
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr "Zoek in Voorraad"
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr "Toon inkooporders in het zoekvenster"
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr "Inactieve Inkooporders Weglaten"
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr "Inactieve inkooporders weglaten in het zoekvenster"
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr "Verkooporders zoeken"
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr "Toon verkooporders in het zoekvenster"
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr "Inactieve Verkooporders Weglaten"
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr "Inactieve verkooporders weglaten in het zoekvenster"
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr "Prijs"
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr "Actief"
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr "Token"
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr "Token voor toegang"
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr "Geheim"
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr "Bericht ID"
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr "Host"
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr "Koptekst"
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr "Koptekst van dit bericht"
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr "Berichtinhoud"
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr "Inhoud van dit bericht"
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr "Upload Bestand"
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr "URL"
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr "URL van afbeelding"
-
 #: company/models.py:98
 msgid "Company description"
 msgstr ""
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr "Website"
 
@@ -2707,9 +2774,9 @@ msgstr "is fabrikant"
 msgid "Does this company manufacture parts?"
 msgstr "Fabriceert dit bedrijf onderdelen?"
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr "Valuta"
 
@@ -2717,9 +2784,9 @@ msgstr "Valuta"
 msgid "Default currency used for this company"
 msgstr "Standaardvaluta die gebruikt wordt voor dit bedrijf"
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr "Basis onderdeel"
 
@@ -2731,11 +2798,11 @@ msgstr "Onderdeel selecteren"
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr "Fabrikant"
 
@@ -2745,11 +2812,11 @@ msgstr "Fabrikant selecteren"
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr "MPN"
 
@@ -2778,8 +2845,8 @@ msgstr "Parameternaam"
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr "Waarde"
@@ -2791,7 +2858,7 @@ msgstr "Parameterwaarde"
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr "Eenheden"
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderdeel"
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr "Leverancier"
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr "Leverancier selecteren"
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr "SKU"
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr "Opmerking"
 
@@ -2860,7 +2927,7 @@ msgstr "Minimale kosten (bijv. voorraadkosten)"
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr "Order meerdere"
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr "Beschikbaar"
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr "laatst bijgewerkt"
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr "Valutacode"
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr "Bedrijf"
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr "Inkooporder aanmaken"
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr "Bedrijfsinformatie bewerken"
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr "Bedrijf bewerken"
 
@@ -2953,14 +3020,14 @@ msgstr "Nieuwe afbeelding uploaden"
 msgid "Download image from URL"
 msgstr "Afbeelding downloaden van URL"
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr "Klant"
 
@@ -2977,6 +3044,11 @@ msgstr "Telefoon"
 msgid "Upload Image"
 msgstr "Afbeelding Uploaden"
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr "Afbeelding Downloaden"
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr "Nieuwe Verkooporder"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr "Leverancierslijst"
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr "Order onderdeel"
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr "Fabrikant onderdeel bewerken"
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr "Fabrikant onderdeel verwijderen"
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr "Geen fabrikanten informatie beschikbaar"
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr "Verwijder leveranciersonderdelen"
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr "Verwijderen"
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr "Toegewezen Voorraadartikelen"
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr "Prijzen"
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr "Voorraadartikelen"
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr ""
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr "Nieuwe fabrikant"
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr "Klanten"
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr "Nieuwe Klant"
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr "Bedrijven"
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr "Nieuw Bedrijf"
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr "Afbeelding Downloaden"
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr "Opgegeven URL is geen geldig afbeeldingsbestand"
-
 #: label/models.py:102
 msgid "Label name"
 msgstr "Labelnaam"
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr "Filters"
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr "Order beschrijving"
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr "Link naar externe pagina"
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr "Aangemaakt Door"
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr "Gebruiker of groep verantwoordelijk voor deze order"
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr "Ordernotities"
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr "Orderreferentie"
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr "Inkooporder status"
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr "Bedrijf waar de artikelen van worden besteld"
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr "Order referentiecode van leverancier"
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr "ontvangen door"
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr "Datum van uitgifte"
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr "Order uitgegeven op datum"
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 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:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr "Order voltooid op datum"
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr "Klant order referentiecode"
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr "Streefdatum voor voltooien order. De order is na deze datum achterstallig."
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr "Verzenddatum"
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr "verzonden door"
 
-#: order/models.py:737
+#: order/models.py:714
 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:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr "Alleen orders in afwachting kunnen als voltooid worden gemarkeerd"
 
-#: order/models.py:744
+#: order/models.py:721
 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:747
+#: order/models.py:724
 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:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr "Hoeveelheid artikelen"
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr "Artikelregel referentie"
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr "Artikel notities"
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr "Verwachte verzenddatum van het artikel"
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr "Context"
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr "verwijderd"
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr "Order"
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr "Inkooporder"
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr "Ontvangen"
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-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:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr "Verkooporder komt niet overeen met zending"
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr "Verzending komt niet overeen met verkooporder"
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+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:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr "Verkooporder komt niet overeen met zending"
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr "Verzending komt niet overeen met verkooporder"
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr "Verzendreferentie verkooporder"
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr "Order kan niet worden geannuleerd"
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr "Order is niet open"
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr "Inkooporder moet worden gespecificeerd"
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr "De leverancier moet overeenkomen met de inkooporder"
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr "Inkooporder moet overeenkomen met de leverancier"
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr "Artikel"
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr "Artikelregel komt niet overeen met inkooporder"
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr "Artikelen moeten worden opgegeven"
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr "Artikelregel is niet gekoppeld aan deze bestelling"
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr "Zending is niet gekoppeld aan deze bestelling"
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr "Uitgegeven"
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr "Inkooporder Artikelen"
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr "Artikel toevoegen"
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr "Ordernotities"
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr "Voeg Orderregel toe"
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr "Deze Verkooporder is niet volledig toegewezen"
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr "Acties"
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr "In bestelling"
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr "Ongeldige hoeveelheid"
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr ""
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr "Onderdeel Parameters"
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr "Toegewezen aan Productieopdracht"
 msgid "Allocated to Sales Orders"
 msgstr "Toegewezen aan verkooporders"
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr "Geen overeenkomende afbeeldingen gevonden"
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr "Selecteer afbeelding onderdeel"
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr "Afbeelding onderdeel bijgewerkt"
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr "Afbeelding van onderdeel niet gevonden"
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr "Filters inkooporder"
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr "Vereist Voor"
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr "Serienummer"
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr "Artikel is toegewezen aan een productieopdracht"
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr "Geen locatie ingesteld"
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "Bevestigen"
 
@@ -7542,7 +7603,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr "Vereiste Hoeveelheid"
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr "Specificeer URL om afbeelding te downloaden"
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr "Moet een geldige afbeeldings-URL zijn"
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr "Externe server moet toegankelijk zijn"
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr "Voeg Fabrikantgegevens toe"
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr "Voeg onderdeelfabrikantgegevens toe aan geëxporteerde stuklijst"
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr "Geen Voorraad Aanwezig"
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr "Gemiddelde inkoopprijs"
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr "Bewerk Productieopdracht"
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr "Maak Productieopdracht"
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr "Annuleer Productieopdracht"
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr "Weet je zeker dat je de productie wilt annuleren?"
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr "Voorraadartikelen zijn toegewezen aan deze productieopdracht"
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr "Er staan onvolledige outputs open voor deze productieopdracht"
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr "Productieopdracht is gereed om als voltooid te markeren"
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr "Productieopdracht is onvolledig"
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr "Voltooi Productieopdracht"
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr "De stuklijst bevat traceerbare onderdelen"
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr "Productieuitvoeren moeten individueel worden gegenereerd"
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr "Traceerbare onderdelen kunnen een serienummer hebben"
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr "Voer serienummers in om meerdere enkelvoudige productuitvoeren te genereren"
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr "Selecteer Productieuitvoeren"
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr "Voltooi Productieuitvoeren"
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr "Verwijder Productieuitvoeren"
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr "Geen productieopdracht allocaties gevonden"
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr "Locatie is niet opgegeven"
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr "Geen actieve productieuitvoeren gevonden"
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr "Voorraadtoewijzing bewerken"
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr "Voorraadtoewijzing verwijderen"
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr "Onvoldoende voorraad beschikbaar"
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr "Genoeg voorraad beschikbaar"
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr "Toegewezen"
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr "Productie voorraad"
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr "Voorraad order"
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr "Voorraad toewijzen"
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "Onderdelen selecteren"
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr "Er moet op zijn minst één onderdeel toegewezen worden"
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr "Selecteer bron locatie (laat het veld leeg om iedere locatie te gebruiken)"
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr "Voorraadartikelen toewijzen aan Productieopdracht"
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr "Geen overeenkomende voorraadlocaties"
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr "Geen overeenkomende voorraadartikelen"
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr "Voorraadartikelen zullen automatisch worden toegewezen aan de productieopdracht, volgens de aangegeven richtlijnen"
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr "Productieopdracht is achterstallig"
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr "Fabrikant toevoegen"
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr "Fabrikantonderdeel toevoegen"
 
@@ -8289,99 +8338,99 @@ msgstr "Fabrikantonderdeel toevoegen"
 msgid "Edit Manufacturer Part"
 msgstr "Fabrikantonderdeel bewerken"
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr "Gefabriceerde Onderdelen"
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr "Verwijder Fabrikantenonderdelen"
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr "Parameter verwijderen"
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr "Geen fabrikantenonderdelen gevonden"
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr "Samengesteld onderdeel"
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr "Geen parameters gevonden"
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr "Parameter bewerken"
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr "Parameter verwijderen"
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr "Parameter bewerken"
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr "Parameter verwijderen"
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr "Onderdeelnummer Fabrikant"
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr "Voltooi Inkooporder"
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr "Order markeren als voltooid?"
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr "Alle artikelen zijn ontvangen"
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr "Deze order heeft artikelen die niet zijn gemarkeerd als ontvangen."
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr "Na het voltooien van de order zijn de order en de artikelen langer bewerkbaar."
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr "Inkooporder annuleren"
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr "Weet u zeker dat u deze inkooporder wilt annuleren?"
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr "Deze inkooporder kan niet geannuleerd worden"
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr "Geef inkooporder uit"
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr "Na het plaatsen van de inkooporder zijn de artikelen niet meer bewerkbaar."
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr "Verkooporder annuleren"
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr "Na annulering van de order kan de order niet meer bewerkt worden."
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr "Verkooporder aanmaken"
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr "Export Order"
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr "Te bestellen aantal"
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr "Nieuwe inkooporder"
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr "Toevoegen aan inkooporder"
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr "Geen overeenkomende inkooporders"
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr "Selecteer artikelen"
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr "Ten minste één artikel moet worden geselecteerd"
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr "Order Code"
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr "Besteld"
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr "Ontvang Artikelen Inkooporder"
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr "Geen inkooporder gevonden"
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr "Order is achterstallig"
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr "Artikel dupliceren"
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr "Artikel wijzigen"
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr "Artikel verwijderen"
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr "Geen artikelen gevonden"
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr "Dit artikel is achterstallig"
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr "Artikel ontvangen"
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr "Artikel dupliceren"
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr "Artikel bewerken"
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr "Artikel verwijderen"
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr "Geen verkooporder gevonden"
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr "Bevestig de voorraadtoewijzing"
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr "Voorraadartikel toewijzen aan Verkooporder"
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr "Geen verkooporder toewijzingen gevonden"
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr "Geen overeenkomende artikelen"
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr "Inkooporder bestaat niet meer"
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr "Samengesteld onderdeel"
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr "Onderdeel is een assemblage"
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr "Order status"
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po
index 7efa74775d..08744666d5 100644
--- a/InvenTree/locale/no/LC_MESSAGES/django.po
+++ b/InvenTree/locale/no/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Norwegian\n"
 "Language: no_NO\n"
@@ -25,196 +25,253 @@ msgstr "API endepunkt ikke funnet"
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "Oppgi dato"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr "Notater"
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "Oppgi passord"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "Oppgi nytt passord"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Bekreft passord"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Bekreft nytt passord"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr ""
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "E-post (gjenta)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "Bekreftelsen på e-postaddresse"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "Du må angi samme e-post hver gang."
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
-msgstr "Sjetong"
-
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
+msgstr ""
+
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr "Dupliser serie: {sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "Ugyldig mengde oppgitt"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "Tom serienummerstreng"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "Ugyldig gruppe: {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "Ugyldig/ingen gruppe {group}"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "Ingen serienummer funnet"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "Fil mangler"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "Mangler eksternlenke"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "Vedlegg"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "Velg fil å legge ved"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "Lenke"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "Lenke til ekstern URL"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "Kommenter"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "Kommentar til fil"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "Bruker"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "opplastet dato"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "Filnavn må ikke være tom"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "Ugyldig vedleggskatalog"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "Filnavn inneholder ugyldig tegn '{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "Filnavn mangler filtype"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "Vedlegg med dette filnavnet finnes allerede"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "Feil ved endring av navn"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "Ugyldig valg"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr "Ugyldig valg"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "Navn"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "Beskrivelse"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "Beskrivelse (valgfritt)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "overkategori"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr ""
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr ""
 
@@ -273,56 +330,69 @@ msgstr ""
 msgid "Must be a valid number"
 msgstr "Nummer må være gyldig"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "Filnavn"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr "Ugyldig verdi"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr "Data fil"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr "Velg datafil for opplasting"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr "Filtypen støttes ikke"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "Filen er for stor"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr "Ingen kolonner funnet i filen"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr "Ingen datalader funnet i fil"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr "Ingen datalader oppgitt"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr "Ingen datakolonner angitt"
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr "Mangler påkrevd kolonne: '{name}'"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "Dupliser kolonne: '{col}'"
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr "Tsjekkisk"
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr "Helsekontroll av IvenTree system mislyktes"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "Ventende"
 
@@ -461,8 +531,8 @@ msgstr "Tapt"
 msgid "Returned"
 msgstr "Returnert"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "Sendt"
 
@@ -546,7 +616,7 @@ msgstr "Delt fra overordnet element"
 msgid "Split child item"
 msgstr "Delt fra underelement"
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr "Sammenslått lagervare"
 
@@ -554,7 +624,7 @@ msgstr "Sammenslått lagervare"
 msgid "Converted to variant"
 msgstr "Konvertert til variant"
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr "Sendt til kunde"
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr "IPN må matche regex-mønster {pat}"
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr "Referansen må samsvare med mønster {pattern}"
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr "Ugyldig tegn i navn ({x})"
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr "Overde-verdien må ikke være negativ"
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr "Overde må ikke overstige 100%"
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
@@ -646,20 +710,20 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr "Ugylding valg for overordnet build"
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr "Build ordre"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr "Build ordre"
 msgid "Build Orders"
 msgstr "Build Ordre"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr "Bygg ordrereferanse"
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr "Referanse"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr "Kort beskrivelse av build"
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Overordnet build"
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr "Build order som denne build er tildelt til"
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "Del"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr "Valg del å bygge"
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr "Salg order referanse"
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr "Salgorder som denne build er tildelt til"
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr "Kilde plassering"
 
-#: build/models.py:240
+#: build/models.py:217
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Valg sted for å ta lagervare fra for dette prosjektet (la stå tomt for a ta fra hvilken som helst sted)"
 
-#: build/models.py:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr "Sted for destinasjon"
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr "Velg sted hvor fulførte elementer vil bli lagret"
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr "Prosjekt mengde"
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr "Antall lagervare til prosjektet"
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr "Fullførte elementer"
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr "Antall lagervarer som er fullført"
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr "Byggstatus"
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr "Byggstatuskode"
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr "Batch kode"
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr "Batch kode for denne build output"
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr "Opprettelsesdato"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr "Forventet sluttdato"
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Forventet dato for ferdigstillelse. Build er forvalt etter denne datoen."
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr "Fullført dato"
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr "fullført av"
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr "Utstedt av"
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr "Brukeren som utstede denne prosjekt order"
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr "Ansvarlig"
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr "Bruker ansvarlig for denne prosjekt order"
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr "Bruker ansvarlig for denne prosjekt order"
 msgid "External Link"
 msgstr "Ekstern link"
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr "Ekstra prosjekt notater"
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr "Ingen prosjekt utgang"
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr "Prosjekt utdata er allerede utfylt"
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr "Prosjekt utdata samsvarer ikke Prosjekt Order"
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Prosjektvare må spesifisere en prosjekt utdata, siden hovedvaren er markert som sporbar"
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr "Lagervare er overtildelt"
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr "Tildeling antallet må være større enn null"
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Mengden må væew 1 for serialisert lagervare"
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr "Valgt lagevare ikke funnet i BOM"
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr "Prosjekt"
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr "Bygge for å tildele deler"
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr "Lagervare"
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr "Kilde lagervare"
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "Antall"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr "Installerings informasjon"
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr "Målets lagervare"
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr "Angi antall for build utgang"
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr "Mengden må være større enn null"
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr "Serienummer"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr "Angi serienummer for bygge-utganger"
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr "Beliggenhet"
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr ""
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr "Påkrevd varer er ikke fullt tildelt"
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr "BOM varer"
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr "Varen må være på lager"
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Tilgjengelig mengde ({q}) overskredet"
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr "Måldato"
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr "Fullført"
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr "Salgsorder"
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr "Utstedt av"
 
@@ -1360,8 +1424,8 @@ msgstr "Lager kilde"
 msgid "Stock can be taken from any available location."
 msgstr "Lagervare kan hentes fra alle tilgengelige steder."
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr "Destinasjon"
 
@@ -1375,19 +1439,19 @@ msgstr "Tildelte deler"
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr "Opprettet"
 
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr "Fjern lager allokering"
 
@@ -1438,7 +1502,7 @@ msgstr "Bestill nødvendige deler"
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr "Bestill deler"
 
@@ -1581,985 +1645,997 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr "Velg {name} fil som skal lastes opp"
 
-#: common/models.py:444
+#: common/models.py:451
 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:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr "Valgt verdi er ikke et gyldig alternativ"
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr "Verdien må være en boolsk verdi"
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr "Ingen gruppe"
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr "Omstart påkrevd"
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr "En innstilling har blitt endrett som krever en serveromstart"
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr "Firmanavn"
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr "Internt firmanavn"
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr "Standardvaluta"
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr "Standardvaluta"
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr "Last ned fra URL"
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr "Tilat nedlastning av eksterne bilder og filer fra ekstern URL"
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr "Strekkode støtte"
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr "Aktiver skrekkodeleser støtte"
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
-msgstr "Tilat duplisert IPN"
+msgid "Require confirm"
+msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
-msgstr "Tillat flere deler å dele samme IPN"
+msgid "Require explicit user confirmation for certain action."
+msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
-msgstr "Tillat redigering av IPN"
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
+msgstr "Strekkode støtte"
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
-msgstr "Tillat å endre IPN-verdien mens du redigerer en del"
+msgid "Enable barcode scanner support"
+msgstr "Aktiver skrekkodeleser støtte"
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr "Tilat duplisert IPN"
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr "Tillat flere deler å dele samme IPN"
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr "Tillat redigering av IPN"
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr "Tillat å endre IPN-verdien mens du redigerer en del"
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr "Kopier testdata som standard ved duplisering av en del"
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr "Kopier kategori parametermaler ved oppretting av en del"
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr "Mal"
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr "Deler er maler som standard"
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr "Montering"
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr "Deler kan settes sammen fra andre komponenter som standard"
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr "Komponent"
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr "Deler kan bli brukt som underkomponenter som standard"
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr "Kjøpbar"
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr "Deler er kjøpbare som standard"
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr "Salgbar"
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr "Deler er salgbare som standard"
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr "Sporbar"
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr "Deler er sporbare som standard"
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr "Virtuelle"
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr "Deler er virtuelle som standard"
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr "Vis import i visninger"
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr "Vis importveiviseren i noen deler visninger"
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr "Vis pris i skjemaer"
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr "Vis delpris i noen skjemaer"
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr "Salgsorder referanse prefiks"
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr "Prefiks verdi for salgsorder referanse"
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
-msgstr "Salgsorder referanse prefiks"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
+msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
-msgstr "Prefiks verdi for salgsorder referanse"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
+msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr "Aktiver passord glemt"
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr "Ativer funskjon for glemt passord på innloggingssidene"
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr "Aktiver registrering"
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr "Aktiver egenregistrerting for brukerer på påloggingssidene"
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr "Aktiver SSO"
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr "Aktiver SSO på innloggingssidene"
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr "E-postadresse kreves"
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr "Krevt at brukeren angi e-post ved registrering"
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr "Auto-utfyll SSO brukere"
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Fyll automatisk ut brukeropplysninger fra SSO kontodata"
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr "E-post to ganger"
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr "Ved registrering spør brukere to ganger for e-posten"
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr "Passord to ganger"
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr "Ved registrerting, spør brukere to ganger for passord"
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr "Gruppe for hvilke nye brukere som er tilknyttet registrering"
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr "Brukere må bruke flerfaktorsikkerhet."
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr "Aktiver URL integrering"
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr "Aktiver navigasjonsintegrering"
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr "Aktiver app integrasjon"
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr "Vis abbonerte deler"
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr "Vis abbonerte deler på hjemmesiden"
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr "Vis abbonerte kategorier"
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr "Vis abbonerte delkatekorier på hjemmesiden"
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr "Vis nyeste deler"
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr "Vis nyeste deler på hjemmesiden"
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr "Antall nylig deler"
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr "Vis uvaliderte BOMs"
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Vis BOMs som venter validering på hjemmesiden"
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr "Vis nylige lagerendringer"
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr "Vis nylig endret lagervarer på hjemmesiden"
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr "Siste lagertelling"
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr "Antall nylige lagervarer som skal vises på indeksside"
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr "Vis lav lager"
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr "Vis lav lagervarer på hjemmesiden"
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr "Vis tom lagervarer"
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr "Aktiv"
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr "Sjetong"
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr "Nøkkel for tilgang"
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr "Hemmelig"
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr "Delt hemmlighet for HMAC"
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr "Melding ID"
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr "Unik Id for denne meldingen"
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr "Vert"
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr "Tittel"
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr "Overskrift for denne meldingen"
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr "Brødtekst"
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr "Arbeidet med"
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr "Var arbeidet med denne meldingen ferdig?"
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr "Last opp fil"
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr "Sammelign felter"
 
@@ -2611,15 +2687,6 @@ msgstr "Deler importert"
 msgid "Previous Step"
 msgstr "Forrige trinn"
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr "Bilde URL"
-
 #: company/models.py:98
 msgid "Company description"
 msgstr "Beskrivelse av firma"
@@ -2630,7 +2697,7 @@ msgstr "Beskrivelse av firmaet"
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr "Nettside"
 
@@ -2707,9 +2774,9 @@ msgstr ""
 msgid "Does this company manufacture parts?"
 msgstr "Produserer dette firmaet deler?"
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr "Valuta"
 
@@ -2717,9 +2784,9 @@ msgstr "Valuta"
 msgid "Default currency used for this company"
 msgstr "Standardvaluta brukt for dette firmaet"
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2745,11 +2812,11 @@ msgstr ""
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr ""
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr ""
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr ""
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr ""
 
@@ -2953,14 +3020,14 @@ msgstr ""
 msgid "Download image from URL"
 msgstr "Last ned bilde fra URL"
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr "Kunde"
 
@@ -2977,6 +3044,11 @@ msgstr "Telefon"
 msgid "Upload Image"
 msgstr "Last opp bilde"
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr ""
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr "Ny salgsorder"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr "Tildelt lagervare"
 
@@ -3082,7 +3154,7 @@ msgstr "Tildelt lagervare"
 msgid "Supplier List"
 msgstr "Leverandørliste"
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr "Bestill del"
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr "Endre produsent del"
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr "Slett produsentdel"
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr "Slett leverandørdeler"
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr "Slett"
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr "Tildelt lagervarer"
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr ""
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr ""
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr ""
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr ""
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr ""
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr ""
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr ""
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr ""
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr ""
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr "Spørrefilter (kommaseparert liste over nøkkel=verdiparer),"
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr "Filtre"
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr ""
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr "Seriernummer eksisterer allerede"
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "Bekreft"
 
@@ -7542,7 +7603,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr "Er du sikker du vil kansellere?"
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr "Sporbare varer kan ha angitte serienummer"
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr "Alle valgte leverandørdeler vil slettes"
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po
index 108014011e..17054f7633 100644
--- a/InvenTree/locale/pl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pl/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Polish\n"
 "Language: pl_PL\n"
@@ -25,196 +25,253 @@ msgstr "Nie znaleziono punktu końcowego API"
 msgid "Error details can be found in the admin panel"
 msgstr "Szczegóły błędu można znaleźć w panelu administracyjnym"
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "Wprowadź dane"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr "Uwagi"
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "Wprowadź hasło"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "Wprowadź nowe hasło"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Potwierdź hasło"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Potwierdź nowe hasło"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr "Stare hasło"
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "Adres email (ponownie)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "Potwierdzenie adresu email"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "Należy ponownie wpisać ten sam adres e-mail."
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr "Powtórzony numer seryjny: {sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "Podano nieprawidłową ilość"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "Pusty ciąg numeru seryjnego"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr "Nieprawidłowy zakres grupy: {g}"
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "Nieprawidłowa grupa: {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr "Nieprawidłowa sekwencja grupy: {g}"
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "Nieprawidłowa/Brak grupy {group}"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "Nie znaleziono numerów seryjnych"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr "Liczba unikalnych numerów seryjnych ({s}) musi odpowiadać ilości ({q})"
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "Brak pliku"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "Brak zewnętrznego odnośnika"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "Załącznik"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "Wybierz plik do załączenia"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "Łącze"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "Link do zewnętrznego adresu URL"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "Komentarz"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "Komentarz pliku"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "Użytkownik"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "data przesłania"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "Nazwa pliku nie może być pusta"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "Nieprawidłowy katalog załącznika"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "Nazwa pliku zawiera niedozwolony znak '{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "Brak rozszerzenia w nazwie pliku"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "Załącznik o tej nazwie już istnieje"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "Błąd zmiany nazwy pliku"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "Błędny wybór"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr "Błędny wybór"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "Nazwa"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "Opis"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "Opis (opcjonalny)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "nadrzędny"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr "Błąd serwera"
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr "Błąd został zapisany w logach serwera."
 
@@ -273,56 +330,69 @@ msgstr "Błąd został zapisany w logach serwera."
 msgid "Must be a valid number"
 msgstr "Numer musi być prawidłowy"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "Nazwa pliku"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr "Nieprawidłowa wartość"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr "Plik danych"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr "Wybierz plik danych do przesłania"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr "Nieobsługiwany typ pliku"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "Plik jest zbyt duży"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr "Nie znaleziono kolumn w pliku"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr "Nie znaleziono wierszy danych w pliku"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr "Nie podano wierszy danych"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr "Nie podano kolumn danych"
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr "Brakuje wymaganej kolumny: '{name}'"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "Zduplikowana kolumna: '{col}'"
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr "Czeski"
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr ""
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "W toku"
 
@@ -461,8 +531,8 @@ msgstr "Zagubiono"
 msgid "Returned"
 msgstr "Zwrócone"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "Wysłane"
 
@@ -546,7 +616,7 @@ msgstr "Podziel z pozycji nadrzędnej"
 msgid "Split child item"
 msgstr "Podziel element podrzędny"
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr "Scalone przedmioty magazynowe"
 
@@ -554,7 +624,7 @@ msgstr "Scalone przedmioty magazynowe"
 msgid "Converted to variant"
 msgstr "Przekonwertowano na wariant"
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr "Wyślij do klienta"
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr "IPN musi być zgodny z wyrażeniem regularnym {pat}"
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr ""
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr "Niedozwolony znak w nazwie ({x})"
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr "Wartość przedawnienia nie może być ujemna"
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr "Przedawnienie nie może przekroczyć 100 %"
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr "Nieprawidłowa wartość przedawnienia"
 
@@ -646,20 +710,20 @@ msgstr "O InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr "Zlecenie Budowy"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr "Zlecenie Budowy"
 msgid "Build Orders"
 msgstr "Zlecenia budowy"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr "Odwołanie do zamówienia wykonania"
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr "Referencja"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr "Krótki opis budowy"
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Budowa nadrzędna"
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr "Zamówienie budowy, do którego budowa jest przypisana"
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "Komponent"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr "Wybierz część do budowy"
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr "Odwołanie do zamówienia sprzedaży"
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr "Zamówienie sprzedaży, do którego budowa jest przypisana"
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr "Lokalizacja źródła"
 
-#: build/models.py:240
+#: build/models.py:217
 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:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr "Lokalizacja docelowa"
 
-#: build/models.py:249
+#: build/models.py:226
 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:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr "Ilość do stworzenia"
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr "Ilość przedmiotów do zbudowania"
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr "Ukończone elementy"
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr "Ilość produktów magazynowych które zostały ukończone"
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr "Status budowania"
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr "Kod statusu budowania"
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr "Kod partii"
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr "Kod partii dla wyjścia budowy"
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr "Data utworzenia"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr "Docelowy termin zakończenia"
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr "Data zakończenia"
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr "zrealizowane przez"
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr "Wydany przez"
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr "Użytkownik, który wydał to zamówienie"
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr "Odpowiedzialny"
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr "Użytkownik odpowiedzialny za to zamówienie budowy"
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr "Użytkownik odpowiedzialny za to zamówienie budowy"
 msgid "External Link"
 msgstr "Link Zewnętrzny"
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr "Dodatkowe notatki do budowy"
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr "Nie określono danych wyjściowych budowy"
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr "Budowanie wyjścia jest już ukończone"
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr "Alokowana ilość musi być większa niż zero"
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr "Nie znaleziono wybranego elementu magazynowego w BOM"
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr "Budowa"
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr "Element magazynowy"
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr "Lokalizacja magazynowania przedmiotu"
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "Ilość"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr "Zainstaluj do"
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr "Docelowa lokalizacja magazynowa przedmiotu"
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr ""
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr "Ilość musi być większa niż zero"
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr "Numer seryjny"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr ""
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr "Lokalizacja"
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr "Status"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr "Akceptuj niekompletne"
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr "Element BOM"
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr "Towar musi znajdować się w magazynie"
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr "Magazyn, z którego mają być pozyskane elementy (pozostaw puste, aby pobrać z dowolnej lokalizacji)"
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr "Wyklucz lokalizację"
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr "Wyklucz produkty magazynowe z wybranej lokalizacji"
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr "Towary magazynowe w wielu lokalizacjach mogą być stosowane zamiennie"
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr "Zastępczy magazyn"
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr "Data docelowa"
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr "Zaległe"
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr "Zakończone"
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr "Zamówienie zakupu"
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr "Dodane przez"
 
@@ -1360,8 +1424,8 @@ msgstr "Źródło magazynu"
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr "Przeznaczenie"
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr "Partia"
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr "Utworzony"
 
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr "Przydziel zapasy do budowy"
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr "Cofnij przydział zapasów"
 
@@ -1438,7 +1502,7 @@ msgstr "Zamów wymagane komponenty"
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr "Zamów komponent"
 
@@ -1581,985 +1645,997 @@ msgstr "{name.title()} Plik"
 msgid "Select {name} file to upload"
 msgstr "Wybierz plik {name} do przesłania"
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr "Ustawienia wartości"
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr "Wartość musi być wartością binarną"
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr "Wartość musi być liczbą całkowitą"
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr "Ciąg musi być unikatowy"
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr "Brak grupy"
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr "Wymagane ponowne uruchomienie"
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr "Zmieniono ustawienie, które wymaga restartu serwera"
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr "Użyj nazwy instancji"
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr "Nazwa firmy"
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr "Wewnętrzna nazwa firmy"
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr "Bazowy URL"
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr "Bazowy adres URL dla instancji serwera"
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr "Domyślna waluta"
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr "Domyślna waluta"
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr "Pobierz z adresu URL"
 
-#: common/models.py:848
+#: common/models.py:855
 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:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr "Obsługa kodu kreskowego"
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr "Włącz obsługę skanera kodów"
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr "Wyrażenie regularne IPN"
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
-msgstr "Zezwól na powtarzający się IPN"
+msgid "Require confirm"
+msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
-msgstr "Zezwól na edycję IPN"
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
+msgstr "Obsługa kodu kreskowego"
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
-msgstr ""
+msgid "Enable barcode scanner support"
+msgstr "Włącz obsługę skanera kodów"
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
-msgstr "Skopiuj BOM komponentu"
+msgid "Barcode Webcam Support"
+msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
+msgid "IPN Regex"
+msgstr "Wyrażenie regularne IPN"
+
+#: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr "Zezwól na powtarzający się IPN"
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr "Zezwól na edycję IPN"
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr "Skopiuj BOM komponentu"
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr "Szablon"
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr "Złożenie"
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr "Komponent"
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr "Możliwość zakupu"
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr "Części są domyślnie z możliwością zakupu"
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr "Możliwość sprzedaży"
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr "Części są domyślnie z możliwością sprzedaży"
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr "Możliwość śledzenia"
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr "Części są domyślnie z możliwością śledzenia"
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr "Wirtualny"
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr "Części są domyślnie wirtualne"
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr "Pokaż cenę w BOM"
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr "Dołącz informacje cenowe w tabelach BOM"
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr "Pokaż historię cen"
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr "Utwórz początkowy stan magazynowy"
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr "Ceny wewnętrzne"
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr "Włącz drukowanie etykiet"
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr "Włącz drukowanie etykiet z interfejsu WWW"
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr "DPI etykiety"
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr "Włącz raporty"
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Tryb Debugowania"
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr "Rozmiar strony"
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr "Domyślna wielkość strony dla raportów PDF"
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr "Włącz generowanie raportów testów"
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr "dni"
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr "Włącz opcję zapomnianego hasła"
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr "Włącz funkcję zapomnianego hasła na stronach logowania"
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr "Włącz rejestrację"
 
-#: common/models.py:1175
+#: common/models.py:1199
 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:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr "Włącz SSO"
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr "Włącz SSO na stronach logowania"
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr "Adres e-mail jest wymagany"
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr "Autouzupełnianie użytkowników SSO"
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Automatycznie wypełnij dane użytkownika z danych konta SSO"
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr "E-mail dwa razy"
 
-#: common/models.py:1203
+#: common/models.py:1227
 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:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr "Hasło dwukrotnie"
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich hasło"
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr "Grupuj przy rejestracji"
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr "Wymuś MFA"
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr "Użytkownicy muszą używać zabezpieczeń wieloskładnikowych."
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr "Sprawdź wtyczki przy starcie"
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr "Włącz integrację URL"
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr "Włącz wtyczki, aby dodać ścieżki URL"
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr "Włącz integrację z aplikacją"
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr "Włącz wtyczki, aby dodać aplikacje"
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Włącz wtyczki, aby uruchamiać zaplanowane zadania"
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter"
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr "Pokaż obserwowane części"
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr "Pokaż obserwowane części na stronie głównej"
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr "Pokaż obserwowane kategorie"
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr "Pokaż obserwowane kategorie części na stronie głównej"
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr "Pokaż najnowsze części"
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr "Pokaż najnowsze części na stronie głównej"
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr "Pokaż niski stan magazynowy"
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr "Pokaż elementy o niskim stanie na stronie głównej"
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr "Pokaż wymagany stan zapasów"
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr "Szukaj części"
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr "Ukryj nieaktywne części"
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr "Pokaż ilość w formularzach"
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr "Stały pasek nawigacyjny"
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr "Format daty"
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr "Preferowany format wyświetlania dat"
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Planowanie komponentów"
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr "Cena"
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr "Punkt końcowy"
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr "Aktywny"
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr "Sekret"
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr "Współdzielony sekret dla HMAC"
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr "Id wiadomości"
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr "Unikalny identyfikator dla tej wiadomości"
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr "Host, od którego otrzymano tę wiadomość"
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr "Nagłówek"
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr "Nagłówek tej wiadomości"
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr "Zawartość"
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr "Wyślij plik"
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr "Poprzedni krok"
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr "URL zdjęcia"
-
 #: company/models.py:98
 msgid "Company description"
 msgstr "Opis firmy"
@@ -2630,7 +2697,7 @@ msgstr "Opis firmy"
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr "Strona WWW"
 
@@ -2707,9 +2774,9 @@ msgstr "jest producentem"
 msgid "Does this company manufacture parts?"
 msgstr "Czy to przedsiębiorstwo produkuje części?"
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr "Waluta"
 
@@ -2717,9 +2784,9 @@ msgstr "Waluta"
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr "Część bazowa"
 
@@ -2731,11 +2798,11 @@ msgstr "Wybierz część"
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr "Producent"
 
@@ -2745,11 +2812,11 @@ msgstr "Wybierz producenta"
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr "Wartość"
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr "Jednostki"
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr "Dostawca"
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr "Wybierz dostawcę"
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr "Uwaga"
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr "Opakowanie"
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr "Dostępne"
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr "ostatnia aktualizacja"
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr "Domyślna waluta używana dla tego dostawcy"
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr "Kod Waluty"
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr "Firma"
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr "Utwórz zamówienie zakupu"
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr "Edytuj firmę"
 
@@ -2953,14 +3020,14 @@ msgstr "Prześlij nowy obraz"
 msgid "Download image from URL"
 msgstr "Pobierz obraz z adresu URL"
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr "Klient"
 
@@ -2977,6 +3044,11 @@ msgstr "Telefon"
 msgid "Upload Image"
 msgstr "Załaduj obrazek"
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr "Pobierz obraz"
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr "Lista dostawców"
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr "Zamów komponent"
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr "Edytuj komponent producenta"
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr "Usuń komponent producenta"
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr "Usuń"
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr "Cennik"
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr "Towary"
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr "Nowy dostawca"
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr "Now producent"
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr "Klienci"
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr "Nowy klient"
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr "Firmy"
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr "Nowa firma"
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr "Pobierz obraz"
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr "Nazwa etykiety"
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr "Filtry"
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr "Opis Zamówienia"
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr "Link do zewnętrznej witryny"
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr "Utworzony przez"
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr "Użytkownik lub grupa odpowiedzialna za to zamówienie"
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr "Notatki do zamówienia"
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr "Odniesienie zamówienia"
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr "Status zamówienia zakupu"
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr "odebrane przez"
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr "Data wydania"
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr "Data wystawienia zamówienia"
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr "Data Dostawy Towaru"
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr "Wartość musi być liczbą dodatnią"
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr "Data wysyłki"
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr "wysłane przez"
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr "Ilość elementów"
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr "Zamówienie"
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr "Zlecenie zakupu"
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr "Odebrane"
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr "Cena zakupu"
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr "Cena zakupu jednostkowego"
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr "Gdzie kupujący chce przechowywać ten przedmiot?"
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr "Cena sprzedaży"
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr "Jednostkowa cena sprzedaży"
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr "Wysłana ilość"
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr "Data wysyłki"
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr "Sprawdzone przez"
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr "Użytkownik, który sprawdził tę wysyłkę"
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr "Numer przesyłki"
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr "Notatki do przesyłki"
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr "Numer śledzenia"
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr "Informacje o śledzeniu przesyłki"
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr "Przesyłka została już wysłana"
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr "Zarezerwowana ilość nie może przekraczać ilości na stanie"
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr "Linia"
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr "Przesyłka"
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr "Numer przesyłki"
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr "Notatki do przesyłki"
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr "Numer śledzenia"
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr "Informacje o śledzeniu przesyłki"
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr "Przesyłka została już wysłana"
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr "Zarezerwowana ilość nie może przekraczać ilości na stanie"
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr "Linia"
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr "Komponent"
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr "Zamówienie nie może zostać anulowane"
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr "Niekompletny"
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr "Wydany"
 
@@ -3996,10 +4051,10 @@ msgstr "Wybierz dostawcę części"
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr "Dodaj element zamówienia"
 
@@ -4063,7 +4118,7 @@ msgstr "Otrzymane elementy"
 msgid "Order Notes"
 msgstr "Notatki zamówień"
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr "Oczekujące przesyłki"
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr "Akcje"
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr "Dostępna ilość"
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr "W Zamówieniu"
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr "Wprowadź opis do tego testu"
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr "Wymagane"
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr "Opcjonalne"
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr "Dziedziczone"
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr "Zezwalaj na warianty"
 
@@ -4624,7 +4680,7 @@ msgstr "Zezwalaj na warianty"
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr "Waluta zakupu tego towaru"
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr "Usuń istniejące dane"
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr "Pomiń nieprawidłowe wiersze"
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr "Włącz tę opcję, aby pominąć nieprawidłowe wiersze"
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr "Wyczyść istniejący BOM"
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr "Nie podano ilości"
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr "Nieprawidłowa ilość"
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr "Ścieżka kategorii"
 msgid "Top level part category"
 msgstr "Kategoria najwyższego poziomu"
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr "Podkategorie"
@@ -4837,7 +4893,7 @@ msgstr "Części (w tym podkategorie)"
 msgid "Create new part"
 msgstr "Utwórz nową część"
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr "Nowy komponent"
 
@@ -4862,19 +4918,19 @@ msgstr "Drukuj etykiety"
 msgid "Part Parameters"
 msgstr "Parametry części"
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr "Utwórz nową kategorię części"
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr "Utwórz część"
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr "Utwórz kolejną część po tej"
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr "Część utworzona pomyślnie"
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr "Część jest wirtualna (nie fizyczna)"
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr "Nieaktywny"
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr "Na stanie"
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr "Przypisane do zamówień sprzedaży"
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr "Oblicz"
 msgid "No matching images found"
 msgstr "Nie znaleziono pasujących obrazów"
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr "Ukryj szczegóły części"
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr "Całkowity Koszt"
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr "Brak dostępnych cen dostawców"
 
@@ -5357,7 +5414,7 @@ msgstr "Pokaż cenę sprzedaży"
 msgid "Calculation parameters"
 msgstr "Parametry obliczeniowe"
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr "Koszty dostawcy"
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr "Nieznana baza danych"
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr "Żaden"
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr "Kod QR części"
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr "Wybierz obrazek części"
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr "Zaktualizowano zdjęcie części"
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr "Nie znaleziono obrazka części"
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr "Cennik części"
 
@@ -5601,11 +5658,11 @@ msgstr "Wtyczka"
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr "Wycinek"
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr "Numer Seryjny"
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr "Wynik"
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr "Data"
 
@@ -5828,7 +5885,7 @@ msgstr "Zainstalowane elementy"
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr "Numer seryjny"
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr "Właściciel"
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr "Wybierz właściciela"
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr "Nadrzędny towar"
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr "Część podstawowa"
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr "Wybierz pasującą część dostawcy dla tego towaru"
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr "Notatki do wpisu"
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr "Należy podać wartość dla tego testu"
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr "Nazwa testu"
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr "Wynik testu"
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr "Cena zakupu tego towaru"
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr "Numer seryjny już istnieje"
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr "Część musi być dostępna do sprzedaży"
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr "Lokacje nie są ustawione"
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr "Termin minął"
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr "Ostatnia aktualizacja"
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr "Potwierdź adres e-mail"
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr "Proszę potwierdzić że <a href=\"mailto:%(email)s:\">%(email)s</a> jest adresem e-mail dla użytkownika %(user_display)s."
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "Potwierdź"
 
@@ -7545,7 +7606,7 @@ msgstr "Dodaj załącznik"
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7592,7 +7653,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr "Wymagana ilość"
 
@@ -7613,22 +7674,6 @@ msgstr "Minimalna ilość"
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr "Określ adres URL do pobrania obrazu"
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr "Musi być prawidłowym adresem URL"
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr "Zdalny serwer musi być dostępny"
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr "Zewnętrzne zdjęcie nie może przekraczać maksymalnego dopuszczalnego rozmiaru pliku"
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr "Brak odpowiedzi"
@@ -7697,23 +7742,23 @@ msgstr "Kod błędu"
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr "Nie znaleziono załączników"
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr "Edytuj załącznik"
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr "Data przesłania"
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr "Edytuj załącznik"
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr "Usuń załącznik"
 
@@ -7823,10 +7868,10 @@ msgstr "Wyświetl dane wiersza"
 msgid "Row Data"
 msgstr "Dane wiersza"
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr "Zamknij"
@@ -7836,21 +7881,21 @@ msgid "Download BOM Template"
 msgstr "Pobierz szablon BOM-u"
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr "Wybierz format pliku"
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
-msgstr "Kaskadowe"
+msgid "Multi Level BOM"
+msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7861,422 +7906,426 @@ msgstr "Poziomy"
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr "Dodaj zamiennik"
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr "Zobacz BOM"
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr "Czy na pewno przerwać tę budowę?"
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr "Ostatni numer seryjny"
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr "Utwórz zlecenie budowy"
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr "Wyjście"
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr "Ilość za"
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr "Przydzielono"
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "Wybierz części"
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr "Wybierz"
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr "Brak informacji o użytkowniku"
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8284,7 +8333,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr "Dodaj producenta"
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr "Dodaj część producenta"
 
@@ -8292,99 +8341,99 @@ msgstr "Dodaj część producenta"
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr "Dodaj dostawcę"
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr "Wszystkie wybrane komponenty dostawcy zostaną usunięte"
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr "Dodaj nową firmę"
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr "Usuń parametry"
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr "Nie znaleziono parametrów"
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr "Edytuj Parametr"
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr "Usuń parametr"
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr "Edytuj Parametr"
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr "Usuń parametr"
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8422,61 +8471,61 @@ msgstr "Wyczyść wszystkie filtry"
 msgid "Create filter"
 msgstr "Utwórz filtr"
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr "Działanie zabronione"
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr "Operacja utworzenia nie jest dozwolona"
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr "Operacja aktualizacji nie jest dozwolona"
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr "Operacja usuwania nie jest dozwolona"
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr "Operacja przeglądania nie jest dozwolona"
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr "Pozostaw ten formularz otwarty"
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr "Wprowadź poprawny numer"
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr "Istnieją błędy formularza"
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr "Nie znaleziono wyników"
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr "Wyszukiwanie"
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr "Wyczyść wejście"
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr "Kolumna pliku"
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr "Nazwa pola"
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr "Wybór Kolumn"
 
@@ -8625,25 +8674,25 @@ msgstr "ID lokalizacji"
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr "ID zamówienia"
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr "ID wysyłki"
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr "ID kategorii"
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr "ID części dostawcy"
 
@@ -8667,381 +8716,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr "Oznacz zamówienie jako zakończone?"
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr "Kod zamówienia"
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr "Zamówione"
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr "Ilość do otrzymania"
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr "Potwierdź odbiór elementów"
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr "Przedmioty"
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr "Razem"
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr "Cena jednostkowa"
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr "Cena całkowita"
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr "Nie znaleziono zamówień sprzedaży"
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr "Nieprawidłowy klient"
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr "Edytuj wysyłkę"
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr "Kompletna wysyłka"
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr "Usuń wysyłkę"
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr "Edytuj wysyłkę"
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr "Usuń wysyłkę"
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr "Nie odnaleziono pasujących przesyłek"
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr "Numer referencyjny przesyłki"
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr "Nie wysłano"
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr "Śledzenie"
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr "Potwierdź przydział zapasów"
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr "Cena zakupu"
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr "Oblicz cenę"
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr "Zaktualizuj cenę jednostkową"
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9218,7 +9267,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9246,11 +9295,11 @@ msgstr ""
 msgid "No variants found"
 msgstr "Nie znaleziono wariantów"
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9267,7 +9316,7 @@ msgid "No category"
 msgstr "Brak kategorii"
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr "Wyświetl jako listę"
 
@@ -9291,7 +9340,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr "Wyświetl jako drzewo"
 
@@ -9299,7 +9348,7 @@ msgstr "Wyświetl jako drzewo"
 msgid "Subscribed category"
 msgstr "Obserwowana kategoria"
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr "Ścieżka"
 
@@ -9722,7 +9771,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9730,95 +9779,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr "Kod statusu musi być wybrany"
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr "Szczegóły"
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr "Lokalizacja już nie istnieje"
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr "Zamówienie zakupu już nie istnieje"
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr "Klient już nie istnieje"
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr "Element magazynowy już nie istnieje"
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr "Dodano"
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr "Usunięto"
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9834,223 +9883,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr "Zatwierdzone"
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr "Uwzględnij podlokalizacje"
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr "Obesrwowane"
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr "Numer seryjny"
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr "Kod partii"
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr "Aktywne części"
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr "Część jest zespołem"
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr "Jest przydzielony"
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr "Przedmiot został przydzielony"
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr "W produkcji"
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr "Obejmuje warianty"
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr "Zainstalowane"
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr "Posiada cenę zakupu"
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr "Test pomyślny"
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr "Przypisane do mnie"
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr "Status zamówienia"
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr "Pokaż aktywne części"
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr "Posiada IPN"
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr "Część posiada wewnętrzny numer części"
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr "Możliwość zakupu"
 
diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po
index 81d7057dce..07087cfc48 100644
--- a/InvenTree/locale/pt/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pt/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Portuguese\n"
 "Language: pt_PT\n"
@@ -19,202 +19,259 @@ msgstr ""
 
 #: InvenTree/api.py:52
 msgid "API endpoint not found"
-msgstr ""
+msgstr "Endpoint da API não encontrado"
 
 #: InvenTree/exceptions.py:62
 msgid "Error details can be found in the admin panel"
-msgstr ""
+msgstr "Os detalhes do erro podem ser consultados no painel de administração"
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
-msgstr ""
+msgstr "Inserir data"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
-msgstr ""
+msgstr "Notas"
+
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr "O valor '{name}' não aparece no formato padrão"
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr "O valor fornecido não corresponde ao padrão exigido: "
+
+#: InvenTree/forms.py:133
+msgid "Enter password"
+msgstr "Introduzir palavra-passe"
 
 #: InvenTree/forms.py:134
-msgid "Enter password"
-msgstr ""
-
-#: InvenTree/forms.py:135
 msgid "Enter new password"
-msgstr ""
+msgstr "Introduza a nova palavra-passe"
+
+#: InvenTree/forms.py:143
+msgid "Confirm password"
+msgstr "Confirmar palavra-passe"
 
 #: InvenTree/forms.py:144
-msgid "Confirm password"
-msgstr ""
-
-#: InvenTree/forms.py:145
 msgid "Confirm new password"
-msgstr ""
+msgstr "Confirmar nova palavra-passe"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
-msgstr ""
+msgstr "Palavra-passe anterior"
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
-msgstr ""
+msgstr "Email (novamente)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
-msgstr ""
+msgstr "Confirmação do endereço de email"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
+msgstr "Deve ser introduzido o mesmo endereço de email."
+
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
-msgstr ""
+msgstr "Número de série em duplicado: {sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
-msgstr ""
+msgstr "A quantidade fornecida é inválida"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
-msgstr ""
+msgstr "Número de série vazio"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
-msgstr ""
+msgstr "Intervalo de grupos inválido: {g}"
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
-msgstr ""
+msgstr "Grupo inválido: {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
-msgstr ""
+msgstr "Sequência de grupos inválido: {g}"
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
-msgstr ""
+msgstr "Inválido/sem grupo {group}"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
-msgstr ""
+msgstr "Não foram encontrados números de série"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
-msgstr ""
+msgstr "Quantidade de números de série únicos ({s}) devem corresponder à quantidade ({q})"
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr "Padrão formatado incorretamente"
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr "Chave de formato desconhecido"
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr "Chave de formato exigida em falta"
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr "Campo de referência não pode estar em branco"
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr "A referência deve corresponder ao padrão exigido"
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr "O número de referência é demasiado grande"
+
+#: InvenTree/models.py:382
 msgid "Missing file"
-msgstr ""
+msgstr "Ficheiro em falta"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
-msgstr ""
+msgstr "Link externo em falta"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
-msgstr ""
+msgstr "Anexo"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
-msgstr ""
+msgstr "Selecionar ficheiro a anexar"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
-msgstr ""
+msgstr "Link"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
-msgstr ""
+msgstr "Link para URL externo"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
-msgstr ""
+msgstr "Comentário"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
-msgstr ""
+msgstr "Comentário do ficheiro"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
-msgstr ""
+msgstr "Utilizador"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
-msgstr ""
+msgstr "data de upload"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
-msgstr ""
+msgstr "O nome do ficheiro não pode estar em branco"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
-msgstr ""
+msgstr "Pasta de anexos inválida"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
-msgstr ""
+msgstr "O nome do arquivo contém caratere inválido '{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
-msgstr ""
+msgstr "Extensão em falta no nome do ficheiro"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
-msgstr ""
+msgstr "Já existe um anexo com este nome"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
-msgstr ""
+msgstr "Erro a renomear ficheiro"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
-msgstr ""
+msgstr "Escolha inválida"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,444 +279,451 @@ msgstr ""
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
-msgstr ""
+msgstr "Nome"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
-msgstr ""
+msgstr "Descrição"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
-msgstr ""
+msgstr "Descrição (opcional)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
-msgstr ""
+msgstr "superior"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
-msgstr ""
+msgstr "Erro do servidor"
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
-msgstr ""
+msgstr "Um erro foi registrado pelo servidor."
 
 #: InvenTree/serializers.py:53 part/models.py:2692
 msgid "Must be a valid number"
-msgstr ""
+msgstr "Deve ser um número válido"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
-msgstr ""
+msgstr "Nome do ficheiro"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
-msgstr ""
+msgstr "Valor inválido"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
-msgstr ""
+msgstr "Ficheiros de Dados"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
-msgstr ""
+msgstr "Selecionar ficheiro a enviar"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
-msgstr ""
+msgstr "Tipo de ficheiro não suportado"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
-msgstr ""
+msgstr "O ficheiro é demasiado grande"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
-msgstr ""
+msgstr "Nenhuma coluna encontrada no ficheiro"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
-msgstr ""
+msgstr "Nenhuma linha de dados encontrada no ficheiro"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
-msgstr ""
+msgstr "Nenhuma linha de dados fornecida"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
-msgstr ""
+msgstr "Nenhuma coluna de dados fornecida"
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
-msgstr ""
+msgstr "Coluna obrigatória em falta: '{name}'"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
+msgstr "Coluna duplicada: '{col}'"
+
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
 msgstr ""
 
 #: InvenTree/settings.py:698
 msgid "Czech"
-msgstr ""
+msgstr "Checo"
 
 #: InvenTree/settings.py:699
 msgid "German"
-msgstr ""
+msgstr "Alemão"
 
 #: InvenTree/settings.py:700
 msgid "Greek"
-msgstr ""
+msgstr "Grego"
 
 #: InvenTree/settings.py:701
 msgid "English"
-msgstr ""
+msgstr "Inglês"
 
 #: InvenTree/settings.py:702
 msgid "Spanish"
-msgstr ""
+msgstr "Espanhol"
 
 #: InvenTree/settings.py:703
 msgid "Spanish (Mexican)"
-msgstr ""
+msgstr "Espanhol (Mexicano)"
 
 #: InvenTree/settings.py:704
 msgid "Farsi / Persian"
-msgstr ""
+msgstr "Persa"
 
 #: InvenTree/settings.py:705
 msgid "French"
-msgstr ""
+msgstr "Francês"
 
 #: InvenTree/settings.py:706
 msgid "Hebrew"
-msgstr ""
+msgstr "Hebraico"
 
 #: InvenTree/settings.py:707
 msgid "Hungarian"
-msgstr ""
+msgstr "Húngaro"
 
 #: InvenTree/settings.py:708
 msgid "Italian"
-msgstr ""
+msgstr "Italiano"
 
 #: InvenTree/settings.py:709
 msgid "Japanese"
-msgstr ""
+msgstr "Japonês"
 
 #: InvenTree/settings.py:710
 msgid "Korean"
-msgstr ""
+msgstr "Coreano"
 
 #: InvenTree/settings.py:711
 msgid "Dutch"
-msgstr ""
+msgstr "Holandês"
 
 #: InvenTree/settings.py:712
 msgid "Norwegian"
-msgstr ""
+msgstr "Norueguês"
 
 #: InvenTree/settings.py:713
 msgid "Polish"
-msgstr ""
+msgstr "Polaco"
 
 #: InvenTree/settings.py:714
 msgid "Portuguese"
-msgstr ""
+msgstr "Português (Portugal)"
 
 #: InvenTree/settings.py:715
 msgid "Portuguese (Brazilian)"
-msgstr ""
+msgstr "Português (Brasil)"
 
 #: InvenTree/settings.py:716
 msgid "Russian"
-msgstr ""
+msgstr "Russo"
 
 #: InvenTree/settings.py:717
 msgid "Swedish"
-msgstr ""
+msgstr "Sueco"
 
 #: InvenTree/settings.py:718
 msgid "Thai"
-msgstr ""
+msgstr "Tailandês"
 
 #: InvenTree/settings.py:719
 msgid "Turkish"
-msgstr ""
+msgstr "Turco"
 
 #: InvenTree/settings.py:720
 msgid "Vietnamese"
-msgstr ""
+msgstr "Vietnamita"
 
 #: InvenTree/settings.py:721
 msgid "Chinese"
-msgstr ""
+msgstr "Chinês"
 
 #: InvenTree/status.py:99
 msgid "Background worker check failed"
-msgstr ""
+msgstr "Processo em segundo plano falhou"
 
 #: InvenTree/status.py:103
 msgid "Email backend not configured"
-msgstr ""
+msgstr "Backend de e-mail não configurado"
 
 #: InvenTree/status.py:106
 msgid "InvenTree system health checks failed"
-msgstr ""
+msgstr "Verificações de saúde do sistema InvenTree falharam"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
-msgstr ""
+msgstr "Pendente"
 
 #: InvenTree/status_codes.py:100
 msgid "Placed"
-msgstr ""
+msgstr "Submetido"
 
 #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:309
 #: order/templates/order/order_base.html:134
 #: order/templates/order/sales_order_base.html:133
 msgid "Complete"
-msgstr ""
+msgstr "Completo"
 
 #: InvenTree/status_codes.py:102 InvenTree/status_codes.py:142
 #: InvenTree/status_codes.py:308
 msgid "Cancelled"
-msgstr ""
+msgstr "Cancelado"
 
 #: InvenTree/status_codes.py:103 InvenTree/status_codes.py:143
 #: InvenTree/status_codes.py:183
 msgid "Lost"
-msgstr ""
+msgstr "Perdido"
 
 #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
 #: InvenTree/status_codes.py:186
 msgid "Returned"
-msgstr ""
+msgstr "Devolvido"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
-msgstr ""
+msgstr "Enviado"
 
 #: InvenTree/status_codes.py:179
 msgid "OK"
-msgstr ""
+msgstr "OK"
 
 #: InvenTree/status_codes.py:180
 msgid "Attention needed"
-msgstr ""
+msgstr "Atenção necessária"
 
 #: InvenTree/status_codes.py:181
 msgid "Damaged"
-msgstr ""
+msgstr "Danificado"
 
 #: InvenTree/status_codes.py:182
 msgid "Destroyed"
-msgstr ""
+msgstr "Destruído"
 
 #: InvenTree/status_codes.py:184
 msgid "Rejected"
-msgstr ""
+msgstr "Rejeitado"
 
 #: InvenTree/status_codes.py:185
 msgid "Quarantined"
-msgstr ""
+msgstr "Em quarentena"
 
 #: InvenTree/status_codes.py:259
 msgid "Legacy stock tracking entry"
-msgstr ""
+msgstr "Entrada de seguimento de stock antiga"
 
 #: InvenTree/status_codes.py:261
 msgid "Stock item created"
-msgstr ""
+msgstr "Elemento de stock criado"
 
 #: InvenTree/status_codes.py:263
 msgid "Edited stock item"
-msgstr ""
+msgstr "Elemento de stock editado"
 
 #: InvenTree/status_codes.py:264
 msgid "Assigned serial number"
-msgstr ""
+msgstr "Número de série atribuído"
 
 #: InvenTree/status_codes.py:266
 msgid "Stock counted"
-msgstr ""
+msgstr "Stock contado"
 
 #: InvenTree/status_codes.py:267
 msgid "Stock manually added"
-msgstr ""
+msgstr "Stock adicionado manualmente"
 
 #: InvenTree/status_codes.py:268
 msgid "Stock manually removed"
-msgstr ""
+msgstr "Stock removido manualmente"
 
 #: InvenTree/status_codes.py:270
 msgid "Location changed"
-msgstr ""
+msgstr "Localização alterada"
 
 #: InvenTree/status_codes.py:272
 msgid "Installed into assembly"
-msgstr ""
+msgstr "Instalado na montagem"
 
 #: InvenTree/status_codes.py:273
 msgid "Removed from assembly"
-msgstr ""
+msgstr "Removido da montagem"
 
 #: InvenTree/status_codes.py:275
 msgid "Installed component item"
-msgstr ""
+msgstr "Instalado elemento do componente"
 
 #: InvenTree/status_codes.py:276
 msgid "Removed component item"
-msgstr ""
+msgstr "Elemento do componente removido"
 
 #: InvenTree/status_codes.py:278
 msgid "Split from parent item"
-msgstr ""
+msgstr "Separar do elemento ascendente"
 
 #: InvenTree/status_codes.py:279
 msgid "Split child item"
-msgstr ""
+msgstr "Separar elemento descendente"
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
-msgstr ""
+msgstr "Itens de stock fundidos"
 
 #: InvenTree/status_codes.py:283
 msgid "Converted to variant"
-msgstr ""
+msgstr "Transformado em variante"
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
-msgstr ""
+msgstr "Enviado ao cliente"
 
 #: InvenTree/status_codes.py:286
 msgid "Returned from customer"
-msgstr ""
+msgstr "Devolvido do cliente"
 
 #: InvenTree/status_codes.py:288
 msgid "Build order output created"
-msgstr ""
+msgstr "Resultado do pedido de Montagem criado"
 
 #: InvenTree/status_codes.py:289
 msgid "Build order output completed"
-msgstr ""
+msgstr "Resultado do pedido de Montagem completo"
 
 #: InvenTree/status_codes.py:290
 msgid "Consumed by build order"
-msgstr ""
+msgstr "Utilizado no pedido de montagem"
 
 #: InvenTree/status_codes.py:292
 msgid "Received against purchase order"
-msgstr ""
+msgstr "Originou de um pedido de compra"
 
 #: InvenTree/status_codes.py:307
 msgid "Production"
-msgstr ""
+msgstr "Produção"
 
 #: InvenTree/validators.py:18
 msgid "Not a valid currency code"
-msgstr ""
+msgstr "Não é um código de moeda válido"
 
 #: InvenTree/validators.py:45
 msgid "Invalid character in part name"
-msgstr ""
+msgstr "Caractere inválido no nome da peça"
 
 #: InvenTree/validators.py:57
 #, python-brace-format
 msgid "IPN must match regex pattern {pat}"
-msgstr ""
+msgstr "IPN deve corresponder ao padrão regex {pat}"
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
-msgstr ""
+msgstr "A referência deve corresponder ao padrão {pattern}"
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr ""
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
-msgstr ""
+msgstr "Valor excedente não deve ser negativo"
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
-msgstr ""
+msgstr "Excedente não deve ultrapassar 100%"
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
-msgstr ""
+msgstr "Valor inválido para excedente"
 
 #: InvenTree/views.py:519 templates/InvenTree/settings/user.html:22
 msgid "Edit User Information"
-msgstr ""
+msgstr "Editar informações do utilizador"
 
 #: InvenTree/views.py:531 templates/InvenTree/settings/user.html:19
 msgid "Set Password"
-msgstr ""
+msgstr "Definir Palavra-Passe"
 
 #: InvenTree/views.py:553
 msgid "Password fields must match"
-msgstr ""
+msgstr "Campos de palavra-passe não coincidem"
 
 #: InvenTree/views.py:562
 msgid "Wrong password provided"
-msgstr ""
+msgstr "Palavra-passe incorreta fornecida"
 
 #: InvenTree/views.py:751 templates/navbar.html:152
 msgid "System Information"
-msgstr ""
+msgstr "Informações do sistema"
 
 #: InvenTree/views.py:758 templates/navbar.html:163
 msgid "About InvenTree"
-msgstr ""
+msgstr "Sobre o InvenTree"
 
 #: build/api.py:217
 msgid "Build must be cancelled before it can be deleted"
-msgstr ""
+msgstr "A Construção deve ser cancelada antes de poder ser excluída"
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
-msgstr ""
+msgstr "Escolha inválida para construção ascendente"
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
-msgstr ""
+msgstr "Pedido de Construção"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -667,180 +731,180 @@ msgstr ""
 #: templates/InvenTree/search.html:139
 #: templates/InvenTree/settings/sidebar.html:47 users/models.py:41
 msgid "Build Orders"
-msgstr ""
+msgstr "Pedidos de Construção"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
-msgstr ""
+msgstr "Referência do Pedido de Montagem"
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
-msgstr ""
+msgstr "Referência"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
-msgstr ""
+msgstr "Breve descrição da construção"
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
-msgstr ""
+msgstr "Construção ascendente"
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
-msgstr ""
+msgstr "Pedido de Construção a que esta montagem está alocada"
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
-msgstr ""
+msgstr "Peça"
+
+#: build/models.py:199
+msgid "Select part to build"
+msgstr "Selecionar peça a montar"
+
+#: build/models.py:204
+msgid "Sales Order Reference"
+msgstr "Referência de Pedido de Venda"
+
+#: build/models.py:208
+msgid "SalesOrder to which this build is allocated"
+msgstr "Pedido de Venda ao qual esta construção está associada"
+
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
+msgid "Source Location"
+msgstr "Localização de Origem"
+
+#: build/models.py:217
+msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
+msgstr "Escolher localização de onde deve ser retirado o stock para esta construção (deixar em branco para retirar de qualquer localização)"
 
 #: build/models.py:222
-msgid "Select part to build"
-msgstr ""
-
-#: build/models.py:227
-msgid "Sales Order Reference"
-msgstr ""
-
-#: build/models.py:231
-msgid "SalesOrder to which this build is allocated"
-msgstr ""
-
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
-msgid "Source Location"
-msgstr ""
-
-#: build/models.py:240
-msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
-msgstr ""
-
-#: build/models.py:245
 msgid "Destination Location"
-msgstr ""
+msgstr "Local de destino"
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
-msgstr ""
+msgstr "Escolher o local onde os elementos completos serão armazenados"
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
-msgstr ""
+msgstr "Quantidade da Montagem"
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
-msgstr ""
+msgstr "Número de unidades de stock a construir"
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
-msgstr ""
+msgstr "Unidades concluídas"
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
-msgstr ""
+msgstr "Estado da Construção"
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
-msgstr ""
+msgstr "Código de estado da Construção"
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
-msgstr ""
+msgstr "Código de lote"
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
-msgstr ""
+msgstr "Código de lote para este resultado da construção"
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
-msgstr ""
+msgstr "Data de Criação"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
-msgstr ""
+msgstr "Data Final Alvo"
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr ""
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr ""
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr ""
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr ""
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr ""
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr ""
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr ""
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr ""
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr ""
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr ""
 
@@ -1360,8 +1424,8 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr ""
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr ""
 
@@ -1407,13 +1471,13 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
-msgstr ""
+msgstr "Desalocar stock"
 
 #: build/templates/build/detail.html:177
 msgid "Unallocate Stock"
-msgstr ""
+msgstr "Desalocar stock"
 
 #: build/templates/build/detail.html:179
 msgid "Automatically allocate stock to build"
@@ -1438,7 +1502,7 @@ msgstr ""
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr ""
 
@@ -1581,985 +1645,997 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr ""
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr ""
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr ""
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
-msgstr ""
+msgid "Barcode Webcam Support"
+msgstr "Suporte a webcam de código de barras"
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr ""
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr ""
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr ""
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr ""
-
 #: company/models.py:98
 msgid "Company description"
 msgstr ""
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr ""
 
@@ -2707,9 +2774,9 @@ msgstr ""
 msgid "Does this company manufacture parts?"
 msgstr ""
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr ""
 
@@ -2717,9 +2784,9 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2745,11 +2812,11 @@ msgstr ""
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr ""
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr ""
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr ""
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr ""
 
@@ -2953,14 +3020,14 @@ msgstr ""
 msgid "Download image from URL"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -2977,6 +3044,11 @@ msgstr ""
 msgid "Upload Image"
 msgstr ""
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr ""
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr ""
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3111,10 +3183,10 @@ msgstr ""
 
 #: company/templates/company/manufacturer_part.html:95
 msgid "No manufacturer information available"
-msgstr ""
+msgstr "Não existe informação do fabricante"
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr ""
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr ""
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr ""
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr ""
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr ""
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr ""
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr ""
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr ""
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr ""
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr ""
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4384,7 +4440,7 @@ msgstr ""
 
 #: part/models.py:900
 msgid "Does this part have tracking for unique items?"
-msgstr ""
+msgstr "Esta peça tem rastreamento para itens únicos?"
 
 #: part/models.py:905
 msgid "Can this part be purchased from external suppliers?"
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr ""
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr ""
 
@@ -7542,7 +7603,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
-msgstr ""
+msgstr "Concluir Pedido de Compra"
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/pt_br/LC_MESSAGES/django.po b/InvenTree/locale/pt_br/LC_MESSAGES/django.po
index bb94f02fb5..a4a0488c02 100644
--- a/InvenTree/locale/pt_br/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pt_br/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-04 02:07+0000\n"
+"POT-Creation-Date: 2022-07-09 00:30+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"
@@ -26,11 +26,11 @@ msgstr ""
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr ""
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:374
 #: build/templates/build/sidebar.html:21 company/models.py:523
 #: company/templates/company/sidebar.html:25 order/models.py:929
 #: order/templates/order/po_sidebar.html:11
@@ -41,10 +41,10 @@ msgstr ""
 #: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
 #: stock/serializers.py:909 stock/serializers.py:1041
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1100
+#: templates/js/translated/company.js:952 templates/js/translated/order.js:2040
 #: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3649 templates/js/translated/order.js:4047
+#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
 #: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
 msgid "Notes"
 msgstr ""
@@ -81,7 +81,7 @@ msgstr ""
 msgid "You must type the same email each time."
 msgstr ""
 
-#: InvenTree/forms.py:282 common/models.py:1843
+#: InvenTree/forms.py:282 common/models.py:1850
 msgid "Token"
 msgstr ""
 
@@ -141,7 +141,7 @@ msgstr ""
 
 #: InvenTree/models.py:191 stock/models.py:2096
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr ""
 
@@ -150,11 +150,11 @@ msgid "Select file to attach"
 msgstr ""
 
 #: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: company/models.py:510 order/models.py:136 order/models.py:1268
 #: part/models.py:795
 #: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: templates/js/translated/company.js:645
+#: templates/js/translated/company.js:936 templates/js/translated/order.js:2687
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr ""
@@ -165,7 +165,7 @@ msgid "Link to external URL"
 msgstr ""
 
 #: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr ""
 
@@ -173,9 +173,9 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1619
+#: common/models.py:1620 common/models.py:1843 common/models.py:1844
+#: common/models.py:2106 common/models.py:2107 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
 #: templates/js/translated/stock.js:2576
@@ -215,7 +215,7 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1829
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -223,8 +223,8 @@ msgstr ""
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:534
+#: templates/js/translated/company.js:747
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
 #: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
@@ -242,10 +242,10 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:118
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:847
+#: templates/js/translated/build.js:2480 templates/js/translated/company.js:398
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:1656
 #: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
 #: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
@@ -433,7 +433,7 @@ msgid "InvenTree system health checks failed"
 msgstr ""
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:326
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr ""
 
@@ -462,8 +462,8 @@ msgstr ""
 msgid "Returned"
 msgstr ""
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3275 templates/js/translated/order.js:3624
+#: InvenTree/status_codes.py:141 order/models.py:1151
+#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
 msgid "Shipped"
 msgstr ""
 
@@ -555,7 +555,7 @@ msgstr ""
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr ""
 
@@ -656,7 +656,7 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:106
 #: templates/email/build_order_completed.html:16
 #: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:728
+#: templates/js/translated/build.js:732
 msgid "Build Order"
 msgstr ""
 
@@ -679,10 +679,10 @@ msgstr ""
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3468
-#: templates/js/translated/order.js:3976
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:854
+#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
+#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
+#: templates/js/translated/order.js:3978
 msgid "Reference"
 msgstr ""
 
@@ -701,11 +701,11 @@ msgstr ""
 
 #: build/models.py:214 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1024 order/models.py:1135 order/models.py:1136
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:772
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -718,16 +718,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
 #: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1154 templates/js/translated/build.js:1647
-#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:801
+#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
 #: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:485
+#: templates/js/translated/company.js:597
+#: templates/js/translated/company.js:856 templates/js/translated/order.js:100
 #: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
 #: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3452
+#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
 #: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
@@ -749,7 +749,7 @@ msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
 #: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2071 templates/js/translated/order.js:2818
+#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
 msgid "Source Location"
 msgstr ""
 
@@ -812,7 +812,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2558
+#: templates/js/translated/build.js:2562
 msgid "Completion Date"
 msgstr ""
 
@@ -820,7 +820,7 @@ msgstr ""
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2526
+#: build/models.py:303 templates/js/translated/build.js:2530
 msgid "Issued by"
 msgstr ""
 
@@ -833,7 +833,7 @@ msgstr ""
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2538 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
 msgid "Responsible"
 msgstr ""
 
@@ -887,7 +887,7 @@ msgstr ""
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1187 order/models.py:1405
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
@@ -900,7 +900,7 @@ msgid "Selected stock item not found in BOM"
 msgstr ""
 
 #: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
 #: templates/navbar.html:38
 msgid "Build"
 msgstr ""
@@ -914,11 +914,11 @@ msgstr ""
 #: stock/serializers.py:867 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:739 templates/js/translated/build.js:744
-#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2643
+#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
+#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
 #: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3325
+#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
 #: templates/js/translated/stock.js:2512
 msgid "Stock Item"
@@ -930,9 +930,9 @@ msgstr ""
 
 #: build/models.py:1349 build/serializers.py:183
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
+#: build/templates/build/detail.html:34 common/models.py:1651
 #: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
+#: order/models.py:920 order/models.py:1446 order/serializers.py:1136
 #: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
 #: part/forms.py:74 part/forms.py:89 part/models.py:2601
 #: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
@@ -946,17 +946,17 @@ msgstr ""
 #: stock/serializers.py:291 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:423
-#: templates/js/translated/build.js:575 templates/js/translated/build.js:766
-#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
-#: templates/js/translated/build.js:2086
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:692
+#: templates/js/translated/bom.js:862 templates/js/translated/build.js:427
+#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
+#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
+#: templates/js/translated/build.js:2090
 #: templates/js/translated/model_renderers.js:120
 #: templates/js/translated/order.js:117 templates/js/translated/order.js:886
 #: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
 #: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3242 templates/js/translated/order.js:3331
-#: templates/js/translated/order.js:3474 templates/js/translated/order.js:3982
+#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
+#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
 #: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
@@ -978,7 +978,7 @@ msgid "Destination stock item"
 msgstr ""
 
 #: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1164
+#: templates/js/translated/build.js:1168
 msgid "Build Output"
 msgstr ""
 
@@ -1004,7 +1004,7 @@ msgstr ""
 
 #: build/serializers.py:198 build/serializers.py:639 order/models.py:355
 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
+#: part/serializers.py:935 stock/models.py:478 stock/models.py:1244
 #: stock/serializers.py:300
 msgid "Quantity must be greater than zero"
 msgstr ""
@@ -1048,10 +1048,10 @@ msgstr ""
 #: stock/serializers.py:902 stock/serializers.py:1135
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:751
-#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3250
-#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3339
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
+#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
+#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
+#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
 #: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
@@ -1065,7 +1065,7 @@ msgstr ""
 #: build/serializers.py:363 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:62 order/models.py:665
 #: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
 #: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
 #: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
 #: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
@@ -1289,9 +1289,9 @@ msgstr ""
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
+#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
 #: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3537 templates/js/translated/part.js:1040
+#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
 msgid "Target Date"
 msgstr ""
 
@@ -1304,22 +1304,22 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:392
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr ""
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1128
+#: order/models.py:1222 order/models.py:1353
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
 #: report/templates/report/inventree_build_order_base.html:136
@@ -1345,7 +1345,7 @@ msgstr ""
 msgid "Build Order cannot be completed as incomplete build outputs remain"
 msgstr ""
 
-#: build/templates/build/build_base.html:256
+#: build/templates/build/build_base.html:257
 msgid "Delete Build Order"
 msgstr ""
 
@@ -1361,7 +1361,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
+#: build/templates/build/detail.html:49 order/models.py:1046
 #: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
 msgid "Destination"
 msgstr ""
@@ -1376,19 +1376,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1180
+#: templates/js/translated/build.js:1184
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
 #: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:151
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2518
+#: templates/js/translated/build.js:2522
 msgid "Created"
 msgstr ""
 
@@ -1408,7 +1408,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1899
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1674,893 +1674,901 @@ msgstr ""
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
+#: common/models.py:854
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:855
-msgid "Enable barcode scanner support"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:861
-msgid "Barcode Webcam Support"
+#: common/models.py:861 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:868
-msgid "IPN Regex"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:869
+msgid "Allow barcode scanning via webcam in browser"
+msgstr ""
+
+#: common/models.py:875
+msgid "IPN Regex"
+msgstr ""
+
+#: common/models.py:876
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:873
+#: common/models.py:880
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:874
+#: common/models.py:881
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:887
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:888
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:894
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:895
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:901
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:902
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:908
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:909
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:915
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:916
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:922 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:923
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:439
+#: common/models.py:929 part/models.py:887 templates/js/translated/bom.js:1447
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:930
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:447
+#: common/models.py:936 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:937
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:943 part/models.py:904
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:937
+#: common/models.py:944
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:468
+#: common/models.py:950 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:944
+#: common/models.py:951
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:957 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:951
+#: common/models.py:958
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:964 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:965
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:971
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:972
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:978
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:979
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:990
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:991
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1002
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1003
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1009
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1010
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1016
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1017
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1023
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1024
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1030
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1031
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1037
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1038
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1045
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1046
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1052
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1053
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1062
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1063
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1069 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1063
+#: common/models.py:1070
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1076
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1077
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1087
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1088
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1094
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1095
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1101
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1102
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1107
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1108
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1114
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1115
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1121
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1122
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1124
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1129
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1130
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1136
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1137
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1143
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:1137
+#: common/models.py:1144
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:1142
+#: common/models.py:1149
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:1143
+#: common/models.py:1150
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:1147
+#: common/models.py:1154
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:1148
+#: common/models.py:1155
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:1153
+#: common/models.py:1160
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1161
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
+#: common/models.py:1167
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:1161
+#: common/models.py:1168
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1174
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1175
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1181
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1182
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1188
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1189
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1195
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1196
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1202
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1203
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1209
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1210
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1216
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1217
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1223
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1224
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1230
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1231
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1237
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1238
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1246
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1247
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1254
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1255
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1262
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1263
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1270
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1271
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1278
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1279
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1296 common/models.py:1612
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1318
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1319
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1325
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1326
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1332
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1333
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1339
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1340
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1346
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1347
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1353
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1354
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1360
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1361
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1367
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1368
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1374
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1375
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1381
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1382
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1388
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1389
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1395
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1396
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1402
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1403
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1409
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1410
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1416
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1417
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1423
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1424
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1430
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1431
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1437
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1438
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1444
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1445
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1451
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1452
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1458
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1459
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1465
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1466
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1472
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1473
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1479
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1480
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1486
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1487
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1493
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1494
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1500
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1501
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1507
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1508
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1514
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1515
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1521
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1522
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1528
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1529
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1535
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1536
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1542
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1543
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1549
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1550
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1556
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1557
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1563
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1564
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1570
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1571
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1577
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1578
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1592 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1593
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1652 company/forms.py:37
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
+#: common/models.py:1659 company/serializers.py:319
+#: company/templates/company/supplier_part.html:284 order/models.py:961
 #: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1660
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1820 common/models.py:1998
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1821
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1830
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1835 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:308
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1836
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1851
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1858
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1859
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1965
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1966
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1974
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1975
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1982
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:1983
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:1989
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:1990
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:1999
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2004
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2005
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2631,7 +2639,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:402
 msgid "Website"
 msgstr ""
 
@@ -2732,11 +2740,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:411
+#: templates/js/translated/company.js:386
+#: templates/js/translated/company.js:487
+#: templates/js/translated/company.js:622
+#: templates/js/translated/company.js:907 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2747,9 +2755,9 @@ msgstr ""
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
 #: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
+#: templates/js/translated/company.js:486
+#: templates/js/translated/company.js:638
+#: templates/js/translated/company.js:925 templates/js/translated/order.js:1907
 #: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
 msgid "MPN"
 msgstr ""
@@ -2779,8 +2787,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2089 templates/js/translated/company.js:535
+#: templates/js/translated/company.js:753 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2792,7 +2800,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2810,10 +2818,10 @@ msgstr ""
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
 #: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
+#: templates/js/translated/company.js:390
+#: templates/js/translated/company.js:881 templates/js/translated/order.js:1643
 #: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2861,7 +2869,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:957 templates/js/translated/stock.js:1975
 msgid "Packaging"
 msgstr ""
 
@@ -2880,10 +2888,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1791
+#: templates/js/translated/build.js:2654 templates/js/translated/company.js:962
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2913,7 +2921,7 @@ msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:375
 msgid "Company"
 msgstr ""
 
@@ -2931,7 +2939,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:318
 msgid "Edit Company"
 msgstr ""
 
@@ -2959,9 +2967,9 @@ msgstr ""
 #: stock/models.py:637 stock/serializers.py:796
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
+#: templates/js/translated/company.js:382 templates/js/translated/order.js:2458
 #: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -3075,7 +3083,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1658
+#: templates/js/translated/build.js:1662
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3096,12 +3104,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:670
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:671
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3129,7 +3137,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3176,7 +3184,7 @@ msgstr ""
 #: company/templates/company/supplier_part.html:7
 #: company/templates/company/supplier_part.html:24 stock/models.py:601
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
+#: templates/js/translated/company.js:897 templates/js/translated/order.js:884
 #: templates/js/translated/stock.js:1932
 msgid "Supplier Part"
 msgstr ""
@@ -3427,7 +3435,7 @@ msgstr ""
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:136 order/models.py:1269
 msgid "Link to external page"
 msgstr ""
 
@@ -3512,7 +3520,7 @@ msgstr ""
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
+#: order/models.py:675 order/models.py:1227
 #: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
 msgid "Shipment Date"
 msgstr ""
@@ -3561,25 +3569,25 @@ msgstr ""
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:962
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:992
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:1000
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
+#: order/models.py:1006 order/models.py:1086 order/models.py:1127
+#: order/models.py:1221 order/models.py:1353
 #: templates/js/translated/order.js:3123
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:1007 order/models.py:1086
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
@@ -3591,154 +3599,154 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1025
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
+#: order/models.py:1032 order/templates/order/order_base.html:169
 #: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
 #: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:330
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1033
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
+#: order/models.py:1040 part/templates/part/prices.html:181 stock/models.py:727
 #: stock/serializers.py:169 stock/templates/stock/item_base.html:191
 #: templates/js/translated/stock.js:1963
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1041
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1049
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1115
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1120
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1146 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1147
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1152
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1228
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1235
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1236
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
+#: order/models.py:1244
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1247
+#: order/models.py:1248
 msgid "Shipment notes"
 msgstr ""
 
-#: order/models.py:1253
+#: order/models.py:1254
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1254
+#: order/models.py:1255
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1261
+#: order/models.py:1262
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1262
+#: order/models.py:1263
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1280
+#: order/models.py:1281
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1283
+#: order/models.py:1284
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1386 order/models.py:1388
+#: order/models.py:1387 order/models.py:1389
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1392
+#: order/models.py:1393
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1394
+#: order/models.py:1395
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1397
+#: order/models.py:1398
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1401
+#: order/models.py:1402
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: order/models.py:1407 order/serializers.py:1047
+#: order/models.py:1408 order/serializers.py:1047
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1410
+#: order/models.py:1411
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1411
+#: order/models.py:1412
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1419
+#: order/models.py:1420
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
+#: order/models.py:1428 order/serializers.py:1151 order/serializers.py:1275
 #: templates/js/translated/model_renderers.js:313
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1429
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1442 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1443
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1446
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -3997,8 +4005,8 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:428
-#: templates/js/translated/build.js:580 templates/js/translated/build.js:1972
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
+#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
 #: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
 #: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
@@ -4120,8 +4128,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1880
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1109
+#: templates/js/translated/build.js:1884
 msgid "Actions"
 msgstr ""
 
@@ -4151,47 +4159,47 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:488
+#: part/api.py:489
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:509
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:526
+#: part/api.py:527
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:558
+#: part/api.py:559
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:644
+#: part/api.py:645
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:645
+#: part/api.py:646
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:651
+#: part/api.py:652
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1074
+#: part/api.py:1075
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:1078
+#: part/api.py:1079
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:1093
+#: part/api.py:1094
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:1124 part/api.py:1128 part/api.py:1143 part/api.py:1147
+#: part/api.py:1125 part/api.py:1129 part/api.py:1144 part/api.py:1148
 msgid "This field is required"
 msgstr ""
 
@@ -4205,14 +4213,15 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3563
+#: templates/js/translated/order.js:3565
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:946 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
@@ -4457,7 +4466,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4572,8 +4581,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:873 templates/js/translated/bom.js:998
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4606,9 +4615,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:68
-#: templates/js/translated/table_filters.js:88
+#: templates/js/translated/bom.js:1015
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4617,7 +4626,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1007
 msgid "Allow Variants"
 msgstr ""
 
@@ -4673,75 +4682,75 @@ msgstr ""
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:773
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:781
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:782
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:787
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:788
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:793
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:794
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:799
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:800
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:840
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:841
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:871
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:914
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:917
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:920
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:929
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:937
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:958
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -5185,8 +5194,8 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:613
+#: templates/js/translated/company.js:872
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
@@ -5203,7 +5212,7 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5217,7 +5226,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1036
 msgid "Can Build"
 msgstr ""
 
@@ -5275,7 +5284,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:990
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5358,7 +5367,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:984
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5785,11 +5794,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:421 templates/js/translated/build.js:573
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:1671
+#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3240
-#: templates/js/translated/order.js:3329 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
+#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -6229,7 +6238,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6249,7 +6258,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6407,7 +6416,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1693
+#: templates/js/translated/build.js:1697
 msgid "No location set"
 msgstr ""
 
@@ -6421,7 +6430,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:261
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6431,12 +6440,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:267
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:968 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6679,7 +6688,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6710,7 +6719,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7371,7 +7380,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr ""
 
@@ -7545,7 +7554,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7592,7 +7601,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1482
 msgid "Required Quantity"
 msgstr ""
 
@@ -7697,23 +7706,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7917,89 +7926,93 @@ msgstr ""
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:685
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:701
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:820
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:830
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:834 templates/js/translated/build.js:1773
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
-#: templates/js/translated/order.js:3577
+#: templates/js/translated/bom.js:928 templates/js/translated/build.js:1818
+#: templates/js/translated/order.js:3579
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:933 templates/js/translated/build.js:1822
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/bom.js:935 templates/js/translated/build.js:1824
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:937 templates/js/translated/build.js:1826
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:955
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:970
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:977
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1026 templates/js/translated/bom.js:1146
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1053
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1117
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1119
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1121
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1123 templates/js/translated/bom.js:1285
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1125
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1221 templates/js/translated/build.js:1619
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1465 templates/js/translated/build.js:1757
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1487
 msgid "Inherited from parent BOM"
 msgstr ""
 
@@ -8035,248 +8048,248 @@ msgstr ""
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:219
+#: templates/js/translated/build.js:223
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:260 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:262 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:271
+#: templates/js/translated/build.js:275
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:272
+#: templates/js/translated/build.js:276
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:284
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:285
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:288
+#: templates/js/translated/build.js:292
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:319
+#: templates/js/translated/build.js:323
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:330
+#: templates/js/translated/build.js:334
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:339
+#: templates/js/translated/build.js:343
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:347
+#: templates/js/translated/build.js:351
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:370
+#: templates/js/translated/build.js:374
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:388
+#: templates/js/translated/build.js:392
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:408 templates/js/translated/build.js:560
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:409 templates/js/translated/build.js:561
+#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:463 templates/js/translated/build.js:615
+#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:481
+#: templates/js/translated/build.js:485
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:632
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:717
+#: templates/js/translated/build.js:721
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:755
+#: templates/js/translated/build.js:759
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1134
+#: templates/js/translated/build.js:1138
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1203
+#: templates/js/translated/build.js:1207
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1210
+#: templates/js/translated/build.js:1214
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1232
+#: templates/js/translated/build.js:1236
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1237
+#: templates/js/translated/build.js:1241
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1710 templates/js/translated/build.js:2661
-#: templates/js/translated/order.js:3277
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
+#: templates/js/translated/order.js:3279
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2662
-#: templates/js/translated/order.js:3278
+#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
+#: templates/js/translated/order.js:3280
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1730
+#: templates/js/translated/build.js:1734
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1740
+#: templates/js/translated/build.js:1744
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1765
+#: templates/js/translated/build.js:1769
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1782
+#: templates/js/translated/build.js:1786
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1808 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3582
+#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1839 templates/js/translated/build.js:2084
-#: templates/js/translated/build.js:2657 templates/js/translated/order.js:3596
+#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
+#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1887 templates/js/translated/order.js:3676
+#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/stock_table.html:50
+#: templates/js/translated/build.js:1895 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1894 templates/js/translated/order.js:3669
+#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1933 templates/js/translated/label.js:172
+#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
 #: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1934 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1983 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2057
+#: templates/js/translated/build.js:2061
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2058
+#: templates/js/translated/build.js:2062
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2072 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2100
+#: templates/js/translated/build.js:2104
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2111 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2183 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2280
+#: templates/js/translated/build.js:2284
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2281
+#: templates/js/translated/build.js:2285
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2283
+#: templates/js/translated/build.js:2287
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2288
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2289
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2306
+#: templates/js/translated/build.js:2310
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2413
+#: templates/js/translated/build.js:2417
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
 #: templates/js/translated/stock.js:2340
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2468
+#: templates/js/translated/build.js:2472
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2496
+#: templates/js/translated/build.js:2500
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2638
+#: templates/js/translated/build.js:2642
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8304,87 +8317,87 @@ msgstr ""
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:267
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:339
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:416
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:425
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:440
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:481
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:496
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:530
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:544
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:585
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:605
+#: templates/js/translated/company.js:864 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:609
+#: templates/js/translated/company.js:868 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:737 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:774 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:775 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:844
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:985
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:986
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8422,61 +8435,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8844,15 +8857,15 @@ msgstr ""
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3728
+#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3750
+#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3761
+#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
 msgid "Delete Line Item"
 msgstr ""
 
@@ -8860,22 +8873,22 @@ msgstr ""
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3462
+#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
 msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3487 templates/js/translated/order.js:3995
+#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3503 templates/js/translated/order.js:4011
+#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3545
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
 #: templates/js/translated/part.js:1048
 msgid "This line item is overdue"
 msgstr ""
@@ -8884,39 +8897,39 @@ msgstr ""
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3682
+#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3683
+#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3687
+#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4060
+#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4061
+#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4092
+#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4113
+#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4124
+#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
 msgid "Delete Line"
 msgstr ""
 
@@ -9000,48 +9013,48 @@ msgstr ""
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3254 templates/js/translated/order.js:3343
+#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3262 templates/js/translated/order.js:3352
+#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3666
+#: templates/js/translated/order.js:3668
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3672
+#: templates/js/translated/order.js:3674
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3679 templates/js/translated/order.js:3877
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3691
+#: templates/js/translated/order.js:3693
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3694
+#: templates/js/translated/order.js:3696
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3776
+#: templates/js/translated/order.js:3778
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3885
+#: templates/js/translated/order.js:3887
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3899
+#: templates/js/translated/order.js:3901
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4135
+#: templates/js/translated/order.js:4137
 msgid "No matching lines"
 msgstr ""
 
@@ -9218,7 +9231,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9722,7 +9735,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9831,222 +9844,226 @@ msgid "Assembled Part"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:64
-msgid "Validated"
+msgid "Has Available Stock"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:72
+msgid "Validated"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:110
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:111
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:121
-#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:429
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:472
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:136
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:226
 msgid "Is Serialized"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:139
-#: templates/js/translated/table_filters.js:225
+#: templates/js/translated/table_filters.js:147
+#: templates/js/translated/table_filters.js:233
 msgid "Serial number GTE"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/table_filters.js:234
 msgid "Serial number greater than or equal to"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
 msgid "Serial number LTE"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
+#: templates/js/translated/table_filters.js:152
+#: templates/js/translated/table_filters.js:238
 msgid "Serial number less than or equal to"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:147
-#: templates/js/translated/table_filters.js:148
-#: templates/js/translated/table_filters.js:221
-#: templates/js/translated/table_filters.js:222
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:243
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:401
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:179
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:184
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:209
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:214
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:234
-#: templates/js/translated/table_filters.js:235
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:252
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:253
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:262
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:280
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:303
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:333
-#: templates/js/translated/table_filters.js:344
-#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:349
-#: templates/js/translated/table_filters.js:366
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:435
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:443
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:451
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:452
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po
index cdbefc7977..8d0242ce44 100644
--- a/InvenTree/locale/ru/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ru/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Russian\n"
 "Language: ru_RU\n"
@@ -25,196 +25,253 @@ msgstr "Конечная точка API не обнаружена"
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "Введите дату"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr "Заметки"
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "Введите пароль"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "Введите новый пароль"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Подтвердить пароль"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Подтвердите новый пароль"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr ""
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "Email (еще раз)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "Подтверждение адреса электронной почты"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "Вы должны вводить один и тот же адрес электронной почты."
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr "Повторяющийся серийный номер: {sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "недопустимое количество"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "Пустая строка серийного номера"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "Некорректный идентификатор группы {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "Недопустимая/несуществующая группа {group}"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "Серийных номеров не найдено"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "Файл не найден"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "Отсутствует внешняя ссылка"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "Вложения"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "Выберите файл для вложения"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "Ссылка"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "Ссылка на внешний URL"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "Комментарий"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "Комментарий к файлу"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "Пользователь"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "дата загрузки"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "Имя файла не должно быть пустым"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "Неверная директория вложений"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "Имя файла содержит запрещенные символы '{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "Отсутствует расширение для имени файла"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "Вложение с таким именем файла уже существует"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "Ошибка переименования файла"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "Неверный выбор"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr "Неверный выбор"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "Название"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "Описание"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "Описание (необязательно)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "родитель"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr ""
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr ""
 
@@ -273,56 +330,69 @@ msgstr ""
 msgid "Must be a valid number"
 msgstr "Должно быть действительным номером"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "Имя файла"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr "Неверное значение"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr "Файл данных"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr "Выберите файл данных для загрузки"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr "Неподдерживаемый тип файла"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "Файл слишком большой"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr "Столбцы в файле не найдены"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr "Строки данных в файле не найдены"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr "Строки данных в файле не найдены"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr ""
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr ""
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "Повторяющийся столбец: '{col}'"
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr "Ссылка"
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr ""
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr "Ошибка проверки состояния системы InvenTree"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "Ожидаемый"
 
@@ -461,8 +531,8 @@ msgstr "Потерян"
 msgid "Returned"
 msgstr "Возвращено"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "Доставлено"
 
@@ -546,7 +616,7 @@ msgstr "Отделить от родительского элемента"
 msgid "Split child item"
 msgstr "Разбить дочерний элемент"
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr "Объединенные позиции на складе"
 
@@ -554,7 +624,7 @@ msgstr "Объединенные позиции на складе"
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr "Отправлено клиенту"
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr "IPN должен совпадать с регулярным выражением {pat}"
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr "Ссылка должна соответствовать шаблону {pattern}"
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr "Недопустимый символ в имени ({x})"
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr "Значение перегрузки не должно быть отрицательным"
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr "Перегрузка не может превысить 100%"
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
@@ -646,20 +710,20 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr "Неверный выбор для родительской сборки"
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr "Порядок сборки"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr "Порядок сборки"
 msgid "Build Orders"
 msgstr "Порядок сборки"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr "Ссылка на заказ"
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr "Отсылка"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr "Краткое описание сборки"
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Родительская сборка"
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "Детали"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr "Выберите часть для сборки"
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr "Отсылка на заказ"
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr "Расположение источника"
 
-#: build/models.py:240
+#: build/models.py:217
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr "Место назначения"
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr "Выберите место хранения завершенных элементов"
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr "Количество сборки"
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr "Количество складских предметов для сборки"
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr "Завершенные предметы"
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr "Количество предметов на складе, которые были завершены"
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr "Статус сборки"
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr "Код статуса сборки"
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr "Код партии"
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr "Код партии для этого вывода сборки"
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr "Дата создания"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr "Целевая дата завершения"
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Целевая дата для сборки. Сборка будет просрочена после этой даты."
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr "Дата завершения"
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr "выполнено"
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr "Выдал/ла"
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr "Пользователь, выпустивший этот заказ на сборку"
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr "Ответственный"
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr "Пользователь, ответственный за этот заказ сборки"
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr "Пользователь, ответственный за этот за
 msgid "External Link"
 msgstr "Внешняя ссылка"
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr "Дополнительные заметки к сборке"
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr "Вывод сборки не указан"
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr "Вывод сборки уже завершен"
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr "Вывод сборки не совпадает с порядком сборки"
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Элемент сборки должен указать вывод сборки, так как основная часть помечена как отслеживаемая"
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr "Предмет на складе перераспределен"
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr "Выделенное количество должно быть больше нуля"
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Количество должно быть 1 для сериализованных запасов"
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr "Выбранная единица хранения не найдена в BOM"
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr "Сборка"
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr "Предметы на складе"
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr "Исходный складской предмет"
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "Количество"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr ""
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr "Введите количество для вывода сборки"
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr "Количество должно быть больше нуля"
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr "Серийные номера"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr "Введите серийные номера для результатов сборки"
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr "Расположение"
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr "Статус"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr "BOM Компонент"
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr "Компонент должен быть в наличии"
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Превышено доступное количество ({q})"
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr "Целевая дата"
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr "Просрочено"
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr "Завершённые"
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr "Заказ покупателя"
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr "Выдано"
 
@@ -1360,8 +1424,8 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr "Назначение"
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr "Партия"
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr "Создано"
 
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1438,7 +1502,7 @@ msgstr ""
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr "Заказать детали"
 
@@ -1581,985 +1645,997 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr "Выберите {name} файл для загрузки"
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr ""
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr "Требуется перезапуск"
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr "Название компании"
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr "Внутреннее название компании"
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr "Базовая ссылка"
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr "Базовая ссылка для экземпляра сервера"
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr "Валюта по умолчанию"
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr "Валюта по умолчанию"
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr "Скачать по ссылке"
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr ""
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr ""
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
-msgstr "Разрешить повторяющиеся IPN"
-
-#: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
+msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
-msgstr "Разрешить редактирование IPN"
+#: common/models.py:874
+msgid "Require explicit user confirmation for certain action."
+msgstr ""
+
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
+msgstr ""
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr "Разрешить повторяющиеся IPN"
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr "Разрешить редактирование IPN"
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr "Шаблон"
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr "По умолчанию детали являются шаблонами"
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr "Сборка"
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr "Компонент"
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr "Можно продавать"
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr "Отслеживание"
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr "По умолчанию детали являются отслеживаемыми"
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr "Показывать цену в формах"
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr "Показывать цену в BOM"
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr "Показывать историю цены"
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr "Показывать связанные детали"
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Режим отладки"
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr "Необходимо указать EMail"
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr "Показывать детали, на которые включены уведомления"
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr "Показывать детали, на которые включены уведомления, на главной странице"
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr "Показывать категории, на которые включены уведомления"
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr "Показывать категории, на которые включены уведомления, на главной странице"
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr "Показывать последние детали"
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr "Показывать последние детали на главной странице"
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr "Показывать непроверенные BOMы"
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Показывать BOMы, ожидающие проверки, на главной странице"
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr "Показывать изменившиеся складские запасы"
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr "Показывать единицы хранения с недавно изменившимися складскими запасами на главной странице"
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr "Показывать низкие складские запасы"
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr "Показывать единицы хранения с низкими складскими запасами на главной странице"
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr "Показывать закончившиеся детали"
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr "Показывать закончившиеся на складе единицы хранения на главной странице"
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr "Показывать требуемые детали"
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Показывать требуемые для сборки единицы хранения на главной странице"
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr "Показывать просрочку"
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr "Показывать единицы хранения с истёкшим сроком годности на главной странице"
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr "Показывать залежалые"
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr "Показывать залежалые единицы хранения на главной странице"
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr "Показывать незавершённые сборки"
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr "Показывать незавершённые сборки на главной странице"
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr "Показывать просроченные сборки"
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr "Показывать просроченные сборки на главной странице"
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr "Цена"
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr "Загрузить файл"
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr "Детали импортированы"
 msgid "Previous Step"
 msgstr "Предыдущий шаг"
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr "Ссылка"
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr "Ссылка на изображение"
-
 #: company/models.py:98
 msgid "Company description"
 msgstr "Описание компании"
@@ -2630,7 +2697,7 @@ msgstr "Описание компании"
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr "Сайт"
 
@@ -2707,9 +2774,9 @@ msgstr "производитель"
 msgid "Does this company manufacture parts?"
 msgstr "Является ли компания производителем деталей?"
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr "Валюта"
 
@@ -2717,9 +2784,9 @@ msgstr "Валюта"
 msgid "Default currency used for this company"
 msgstr "Для этой компании используется валюта по умолчанию"
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr "Базовая деталь"
 
@@ -2731,11 +2798,11 @@ msgstr "Выберите деталь"
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr "Производитель"
 
@@ -2745,11 +2812,11 @@ msgstr "Выберите производителя"
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr "Наименование параметра"
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr "Значение"
@@ -2791,7 +2858,7 @@ msgstr "Значение параметра"
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr "Ед.изм"
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr "Поставщик"
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr "Выберите поставщика"
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr "Заметка"
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr "Упаковка"
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr "Для этого поставщика используется валюта по умолчанию"
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr "Код валюты"
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr "Компания"
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr "Создать заказ на закупку"
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr "Редактировать информацию о компании"
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr "Редактировать компанию"
 
@@ -2953,14 +3020,14 @@ msgstr "Загрузить новое изображение"
 msgid "Download image from URL"
 msgstr "Скачать изображение по ссылке"
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr "Покупатель"
 
@@ -2977,6 +3044,11 @@ msgstr "Телефон"
 msgid "Upload Image"
 msgstr "Загрузить изображение"
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr "Скачать изображение"
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr "Новый заказ на продажу"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr "Список поставщиков"
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr "Удалить деталь поставщика"
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr "Удалить"
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr "Деталь поставщика"
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr "Редактировать деталь поставщика"
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr ""
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr "Детали на складе"
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr "Новый поставщик"
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr "Новый производитель"
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr "Покупатели"
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr "Новый покупатель"
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr "Компании"
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr "Новая компания"
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr "Скачать изображение"
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr "Фильтры"
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr "Компания, в которой детали заказываются"
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr "Компания, которой детали продаются"
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr "Заказ на закупку"
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr "Закупочная цена"
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr "Цена продажи"
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr "Курс покупки валюты"
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr "Введите код партии для поступающих единиц хранения"
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr "Для отслеживаемых деталей должно быть указано целочисленное количество"
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr "Курс продажи валюты"
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr "Выберите деталь поставщика"
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr "Действия"
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr "Доступный запас"
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr "Разрешить разновидности"
 
@@ -4624,7 +4680,7 @@ msgstr "Разрешить разновидности"
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr "Для отслеживаемых деталей количество должно быть целым числом"
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr "Валюта покупки этой единицы хранения"
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr "Подходящая деталь не найдена"
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr "Путь к категории"
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr "Подкатегории"
@@ -4837,7 +4893,7 @@ msgstr "Детали (включая подкатегории)"
 msgid "Create new part"
 msgstr "Создать новую деталь"
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr "Новая деталь"
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr "Параметры детали"
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr "Создать категорию деталей"
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr "Создать деталь"
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr "Создать ещё одну деталь после этой"
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr "Деталь создана успешно"
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr "Эта деталь является разновидностью %(link)s"
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr "На складе"
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr "Подходящие изображения не найдены"
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr "Создать новую разновидность детали"
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr "Создать новую разновидность из шаблона <em>'%(full_name)s'</em>."
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr "Неизвестная база данных"
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr "Изображение детали не найдено"
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr "Автор не найден"
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr "Дата не найдена"
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr "Серийный номер"
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr "Родительская единица хранения"
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr "Базовая деталь"
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr "Серийные номера уже существуют"
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr "Выбранная деталь отсутствует в спецификации"
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr "Выбранная компания не является покупателем"
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr "Установленные единицы хранения"
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr "Установить единицу хранения"
 
@@ -6248,7 +6309,7 @@ msgstr "Установить единицу хранения"
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr "Подтверждение адреса электронной почт
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr "Пожалуйста, подтвердите, что <a href=\"mailto:%(email)s\">%(email)s</a> является адресом электронной почты пользователя %(user_display)s."
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "Подтвердить"
 
@@ -7542,7 +7603,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr "Минимальное количество"
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr "Удалённый сервер должен быть доступен"
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr "Код ошибки"
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr "Вложение не найдено"
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr "Скачать шаблон BOM"
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr "Редактировать элемент BOM"
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr "Удалить элемент BOM"
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr "Элементы BOM не найдены"
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr "Унаследовано от родительского BOM"
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr "Редактировать заказ на сборку"
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr "Создать заказ на сборку"
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr "Вы уверены, что хотите отменить эту сборку?"
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr "Спецификация содержит отслеживаемые детали"
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr "Отслеживаемые детали могут иметь серийные номера"
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr "Добавить производителя"
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr "Добавить деталь производителя"
 
@@ -8289,99 +8338,99 @@ msgstr "Добавить деталь производителя"
 msgid "Edit Manufacturer Part"
 msgstr "Редактировать деталь производителя"
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr "Добавить поставщика"
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr "Добавить деталь поставщика"
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr "Все выбранные детали поставщика будут удалены"
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr "Добавить новую компанию"
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr "Информация о компании не найдена"
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr "Удалить параметры"
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr "Информация о детали производителя не найдена"
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr "Деталь-шаблон"
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr "Параметры не найдены"
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr "Редактировать параметр"
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr "Удалить параметр"
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr "Редактировать параметр"
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr "Удалить параметр"
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr "Информация о детали поставщика не найдена"
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr "Редактировать деталь поставщика"
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr "Удалить деталь поставщика"
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr "Операция создания не разрешена"
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr "Операция обновления не разрешена"
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr "Операция удаления не разрешена"
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr "Операция просмотра не разрешена"
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr "Форма содержит ошибки"
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr "Не найдено"
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr "Код места хранения"
 msgid "Build ID"
 msgstr "Код сборки"
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr "Код заказа"
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr "Код категории"
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr "Код детали производителя"
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr "Код детали поставщика"
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr "Отмена этого заказа означает, что заказ нельзя будет редактировать."
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr "Добавить код партии"
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr "Заказов на закупку не найдено"
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr "Общая стоимость"
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr "Заказы на продажу не найдены"
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr "Подтвердите выделение запасов"
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr "Разновидности не найдены"
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr "Нет категории"
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr "Список"
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr "Дерево"
 
@@ -9296,7 +9345,7 @@ msgstr "Дерево"
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr "Путь"
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr "Код партии"
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr "Статус сборки"
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po
index ddb41e937d..fef1055a5b 100644
--- a/InvenTree/locale/sv/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sv/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Swedish\n"
 "Language: sv_SE\n"
@@ -23,198 +23,255 @@ msgstr "API-slutpunkt hittades inte"
 
 #: InvenTree/exceptions.py:62
 msgid "Error details can be found in the admin panel"
-msgstr ""
+msgstr "Information om felet finns under Error i adminpanelen"
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "Ange datum"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
+msgstr "Anteeckningar"
+
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
 msgstr ""
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr "Det angivna värdet matchar inte det obligatoriska mönstret: "
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "Ange lösenord"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "Ange nytt lösenord"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Bekräfta lösenord"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Bekräfta nytt lösenord"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
-msgstr ""
+msgstr "Tidigare lösenord"
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
-msgstr ""
+msgstr "E-post (igen)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
-msgstr ""
+msgstr "Bekräfta e-postadress"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
+msgstr "Du måste ange samma e-post varje gång."
+
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
-msgstr ""
+msgstr "Serienummret finns redan: {sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "Ogiltigt antal angivet"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "Tom serienummersträng"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
-msgstr ""
+msgstr "Ogiltigt gruppområde: {g}"
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "Ogiltig grupp: {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
-msgstr ""
+msgstr "Ogiltig gruppsekvens: {g}"
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "Inga serienummer hittades"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr "Textfältet kan inte lämnas tomt"
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr "Referensnumret är för stort"
+
+#: InvenTree/models.py:382
 msgid "Missing file"
-msgstr ""
+msgstr "Saknad fil"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
-msgstr ""
+msgstr "Extern länk saknas"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "Bilaga"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "Välj fil att bifoga"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
-msgstr ""
+msgstr "Länk"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
-msgstr ""
+msgstr "Länk till extern URL"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "Kommentar"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "Fil kommentar"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "Användare"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "uppladdningsdatum"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "Filnamnet får inte vara tomt"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "Ogiltig katalog för bilaga"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "Filnamnet innehåller ogiltiga tecken '{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "Filnamn saknar ändelse"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "Det finns redan en bilaga med detta filnamn"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "Fel vid namnbyte av fil"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "Ogiltigt val"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,110 +279,123 @@ msgstr "Ogiltigt val"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "Namn"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "Beskrivning"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "Beskrivning (valfritt)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "överordnad"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
-msgstr ""
+msgstr "Serverfel"
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
-msgstr ""
+msgstr "Ett fel har loggats av servern."
 
 #: InvenTree/serializers.py:53 part/models.py:2692
 msgid "Must be a valid number"
 msgstr "Måste vara ett giltigt nummer"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "Filnamn"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
-msgstr ""
+msgstr "Ogiltigt värde"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
-msgstr ""
+msgstr "Datafil"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
-msgstr ""
+msgstr "Välj fil för uppladdning"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
-msgstr ""
+msgstr "Filtypen stöds inte"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
-msgstr ""
+msgstr "Filen är för stor"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
-msgstr ""
+msgstr "Inga kolumner hittades i filen"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
-msgstr ""
+msgstr "Inga rader hittades i filen"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
-msgstr ""
+msgstr "Inga rader angivna"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
-msgstr ""
+msgstr "Inga datakolumner har angetts"
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
-msgstr ""
+msgstr "Saknar obligatorisk kolumn: '{name}'"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
+msgstr "Duplicerad kolumn: '{col}'"
+
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
 msgstr ""
 
 #: InvenTree/settings.py:698
 msgid "Czech"
-msgstr ""
+msgstr "Tjeckiska"
 
 #: InvenTree/settings.py:699
 msgid "German"
@@ -345,11 +415,11 @@ msgstr "Spanska"
 
 #: InvenTree/settings.py:703
 msgid "Spanish (Mexican)"
-msgstr ""
+msgstr "Spanska (Mexikanska)"
 
 #: InvenTree/settings.py:704
 msgid "Farsi / Persian"
-msgstr ""
+msgstr "Farsi / Persiska"
 
 #: InvenTree/settings.py:705
 msgid "French"
@@ -361,7 +431,7 @@ msgstr "Hebreiska"
 
 #: InvenTree/settings.py:707
 msgid "Hungarian"
-msgstr ""
+msgstr "Ungerska"
 
 #: InvenTree/settings.py:708
 msgid "Italian"
@@ -389,11 +459,11 @@ msgstr "Polska"
 
 #: InvenTree/settings.py:714
 msgid "Portuguese"
-msgstr ""
+msgstr "Portugisiska"
 
 #: InvenTree/settings.py:715
 msgid "Portuguese (Brazilian)"
-msgstr ""
+msgstr "Portugisiska (brasiliansk)"
 
 #: InvenTree/settings.py:716
 msgid "Russian"
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr "InvenTree systemhälsokontroll misslyckades"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "Väntar"
 
@@ -461,18 +531,18 @@ msgstr "Förlorad"
 msgid "Returned"
 msgstr "Återlämnad"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "Skickad"
 
 #: InvenTree/status_codes.py:179
 msgid "OK"
-msgstr ""
+msgstr "OK"
 
 #: InvenTree/status_codes.py:180
 msgid "Attention needed"
-msgstr ""
+msgstr "OBS!"
 
 #: InvenTree/status_codes.py:181
 msgid "Damaged"
@@ -488,39 +558,39 @@ msgstr "Avvisad"
 
 #: InvenTree/status_codes.py:185
 msgid "Quarantined"
-msgstr ""
+msgstr "I karantän"
 
 #: InvenTree/status_codes.py:259
 msgid "Legacy stock tracking entry"
-msgstr ""
+msgstr "Spårningspost för äldre lager"
 
 #: InvenTree/status_codes.py:261
 msgid "Stock item created"
-msgstr ""
+msgstr "Lagerpost skapad"
 
 #: InvenTree/status_codes.py:263
 msgid "Edited stock item"
-msgstr ""
+msgstr "Redigerade lagerpost"
 
 #: InvenTree/status_codes.py:264
 msgid "Assigned serial number"
-msgstr ""
+msgstr "Tilldelade serienummer"
 
 #: InvenTree/status_codes.py:266
 msgid "Stock counted"
-msgstr ""
+msgstr "Lagersaldo beräknat"
 
 #: InvenTree/status_codes.py:267
 msgid "Stock manually added"
-msgstr ""
+msgstr "Lagerpost manuellt tillagd"
 
 #: InvenTree/status_codes.py:268
 msgid "Stock manually removed"
-msgstr ""
+msgstr "Lagerpost manuellt borttagen"
 
 #: InvenTree/status_codes.py:270
 msgid "Location changed"
-msgstr ""
+msgstr "Platsen har ändrats"
 
 #: InvenTree/status_codes.py:272
 msgid "Installed into assembly"
@@ -546,21 +616,21 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
-msgstr ""
+msgstr "Sammanfogade lagerposter"
 
 #: InvenTree/status_codes.py:283
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
-msgstr ""
+msgstr "Skickat till kund"
 
 #: InvenTree/status_codes.py:286
 msgid "Returned from customer"
-msgstr ""
+msgstr "Returnerad från kund"
 
 #: InvenTree/status_codes.py:288
 msgid "Build order output created"
@@ -580,11 +650,11 @@ msgstr ""
 
 #: InvenTree/status_codes.py:307
 msgid "Production"
-msgstr ""
+msgstr "Produktion"
 
 #: InvenTree/validators.py:18
 msgid "Not a valid currency code"
-msgstr ""
+msgstr "Inte en giltig valutakod"
 
 #: InvenTree/validators.py:45
 msgid "Invalid character in part name"
@@ -596,70 +666,64 @@ msgid "IPN must match regex pattern {pat}"
 msgstr ""
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr ""
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr ""
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr ""
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr ""
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
 #: InvenTree/views.py:519 templates/InvenTree/settings/user.html:22
 msgid "Edit User Information"
-msgstr ""
+msgstr "Redigera användarinformation"
 
 #: InvenTree/views.py:531 templates/InvenTree/settings/user.html:19
 msgid "Set Password"
-msgstr ""
+msgstr "Ställ in lösenord"
 
 #: InvenTree/views.py:553
 msgid "Password fields must match"
-msgstr ""
+msgstr "Lösenorden måste matcha"
 
 #: InvenTree/views.py:562
 msgid "Wrong password provided"
-msgstr ""
+msgstr "Felaktigt lösenord angivet"
 
 #: InvenTree/views.py:751 templates/navbar.html:152
 msgid "System Information"
-msgstr ""
+msgstr "Systeminformation"
 
 #: InvenTree/views.py:758 templates/navbar.html:163
 msgid "About InvenTree"
-msgstr ""
+msgstr "Om InvenTree"
 
 #: build/api.py:217
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
-msgstr ""
+msgstr "Byggorder"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -667,545 +731,545 @@ msgstr ""
 #: templates/InvenTree/search.html:139
 #: templates/InvenTree/settings/sidebar.html:47 users/models.py:41
 msgid "Build Orders"
-msgstr ""
+msgstr "Byggordrar"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
-msgstr ""
+msgstr "Byggorderreferens"
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
-msgstr ""
+msgstr "Referens"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
-msgstr ""
+msgstr "Kort beskrivning av bygget"
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
-msgstr ""
+msgstr "Överordnat Bygge"
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
-msgstr ""
+msgstr "Del"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
-msgstr ""
+msgstr "Välj del att bygga"
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
-msgstr ""
+msgstr "Försäljningsorderreferens"
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:240
+#: build/models.py:217
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
-msgstr ""
+msgstr "Byggstatus"
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
-msgstr ""
+msgstr "Skapad"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
-msgstr ""
+msgstr "Datum för slutförande"
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
-msgstr ""
+msgstr "Användare som utfärdade denna byggorder"
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
-msgstr ""
+msgstr "Ansvarig"
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
-msgstr ""
+msgstr "Användare som ansvarar för denna byggorder"
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
 #: stock/templates/stock/item_base.html:205
 msgid "External Link"
-msgstr ""
+msgstr "Extern länk"
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
-msgstr ""
+msgstr "Bygg"
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
-msgstr ""
+msgstr "Artikel i lager"
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
-msgstr ""
+msgstr "Antal"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr ""
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr ""
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
-msgstr ""
+msgstr "Serienummer"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr ""
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
-msgstr ""
+msgstr "Plats"
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
-msgstr ""
+msgstr "Status"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
-msgstr ""
+msgstr "Acceptera ofullständig"
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr ""
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1238,24 +1302,24 @@ msgstr ""
 
 #: build/templates/build/build_base.html:54
 msgid "Edit Build"
-msgstr ""
+msgstr "Redigera bygge"
 
 #: build/templates/build/build_base.html:56
 msgid "Cancel Build"
-msgstr ""
+msgstr "Avbryt bygge"
 
 #: build/templates/build/build_base.html:59
 msgid "Delete Build"
-msgstr ""
+msgstr "Ta bort bygge"
 
 #: build/templates/build/build_base.html:64
 #: build/templates/build/build_base.html:65
 msgid "Complete Build"
-msgstr ""
+msgstr "Färdigställ bygget"
 
 #: build/templates/build/build_base.html:87
 msgid "Build Description"
-msgstr ""
+msgstr "Byggbeskrivning"
 
 #: build/templates/build/build_base.html:101
 #, python-format
@@ -1284,15 +1348,15 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
-msgstr ""
+msgstr "Måldatum"
 
 #: build/templates/build/build_base.html:156
 #, python-format
@@ -1303,37 +1367,37 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
-msgstr ""
+msgstr "Försenad"
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
-msgstr ""
+msgstr "Slutförd"
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
-msgstr ""
+msgstr "Försäljningsorder"
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
-msgstr ""
+msgstr "Utfärdad av"
 
 #: build/templates/build/build_base.html:230
 #: build/templates/build/sidebar.html:12
@@ -1360,10 +1424,10 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
-msgstr ""
+msgstr "Mål"
 
 #: build/templates/build/detail.html:56
 msgid "Destination location not specified"
@@ -1375,21 +1439,21 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
-msgstr ""
+msgstr "Skapad"
 
 #: build/templates/build/detail.html:137
 msgid "No target date set"
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1433,14 +1497,14 @@ msgstr ""
 
 #: build/templates/build/detail.html:186
 msgid "Order required parts"
-msgstr ""
+msgstr "Beställ obligatoriska delar"
 
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
-msgstr ""
+msgstr "Beställ delar"
 
 #: build/templates/build/detail.html:199
 msgid "Untracked stock has been fully allocated for this Build Order"
@@ -1498,7 +1562,7 @@ msgstr ""
 #: build/templates/build/detail.html:271 build/templates/build/detail.html:272
 #: stock/templates/stock/location.html:201 templates/stock_table.html:31
 msgid "Print labels"
-msgstr ""
+msgstr "Skriv ut etiketter"
 
 #: build/templates/build/detail.html:294
 msgid "Completed Build Outputs"
@@ -1514,11 +1578,11 @@ msgstr ""
 #: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
-msgstr ""
+msgstr "Bilagor"
 
 #: build/templates/build/detail.html:321
 msgid "Build Notes"
-msgstr ""
+msgstr "Bygganteckningar"
 
 #: build/templates/build/detail.html:502
 msgid "Allocation Complete"
@@ -1530,11 +1594,11 @@ msgstr ""
 
 #: build/templates/build/index.html:18 part/templates/part/detail.html:313
 msgid "New Build Order"
-msgstr ""
+msgstr "Ny byggorder"
 
 #: build/templates/build/index.html:37 build/templates/build/index.html:38
 msgid "Print Build Orders"
-msgstr ""
+msgstr "Skriv ut byggorder"
 
 #: build/templates/build/sidebar.html:5
 msgid "Build Order Details"
@@ -1546,1020 +1610,1032 @@ msgstr ""
 
 #: common/files.py:62
 msgid "Unsupported file format: {ext.upper()}"
-msgstr ""
+msgstr "Filformatet stöds inte: {ext.upper()}"
 
 #: common/files.py:64
 msgid "Error reading file (invalid encoding)"
-msgstr ""
+msgstr "Fel vid läsning av fil (ogiltig kodning)"
 
 #: common/files.py:69
 msgid "Error reading file (invalid format)"
-msgstr ""
+msgstr "Fel vid läsning av filen (ogiltigt format)"
 
 #: common/files.py:71
 msgid "Error reading file (incorrect dimension)"
-msgstr ""
+msgstr "Fel vid läsning av filen (felaktig dimension)"
 
 #: common/files.py:73
 msgid "Error reading file (data could be corrupted)"
-msgstr ""
+msgstr "Fel vid läsning av fil (data kan vara skadat)"
 
 #: common/forms.py:29
 msgid "File"
-msgstr ""
+msgstr "Fil"
 
 #: common/forms.py:30
 msgid "Select file to upload"
-msgstr ""
+msgstr "Välj en fil att ladda upp"
 
 #: common/forms.py:44
 msgid "{name.title()} File"
-msgstr ""
+msgstr "{name.title()} Fil"
 
 #: common/forms.py:45
 #, python-brace-format
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
-msgstr ""
+msgstr "Ingen grupp"
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
-msgstr ""
+msgstr "Omstart krävs"
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
-msgstr ""
+msgstr "Serverinstans (Namn)"
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
-msgstr ""
+msgstr "Företagsnamn"
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
-msgstr ""
+msgstr "Internt företagsnamn"
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
-msgstr ""
-
-#: common/models.py:833
-msgid "Base URL for server instance"
-msgstr ""
+msgstr "Bas-URL"
 
 #: common/models.py:840
-msgid "Default Currency"
-msgstr ""
-
-#: common/models.py:841
-msgid "Default currency"
-msgstr ""
+msgid "Base URL for server instance"
+msgstr "Bas-URL för serverinstans"
 
 #: common/models.py:847
-msgid "Download from URL"
-msgstr ""
+msgid "Default Currency"
+msgstr "Standardvaluta"
 
 #: common/models.py:848
-msgid "Allow download of remote images and files from external URL"
-msgstr ""
+msgid "Default currency"
+msgstr "Standardvaluta"
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr ""
+#: common/models.py:854
+msgid "Download from URL"
+msgstr "Ladda ned från URL"
 
 #: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr ""
+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:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
-msgstr ""
+msgid "Require confirm"
+msgstr "Kräv bekräftelse"
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
-msgstr ""
+msgid "Require explicit user confirmation for certain action."
+msgstr "Kräv uttrycklig användarbekräftelse för vissa åtgärder."
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
-msgstr ""
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
+msgstr "Stöd för streckkoder"
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
-msgstr ""
+msgid "Enable barcode scanner support"
+msgstr "Aktivera stöd för streckkodsläsare"
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr ""
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr ""
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
-msgstr ""
+msgstr "Virtuell"
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
-msgstr ""
+msgstr "Delar är virtuella som standard"
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
-msgstr ""
+msgstr "Visa import i vyer"
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
-msgstr ""
+msgstr "Visa importguiden i vissa delvyer"
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
-msgstr ""
+msgstr "Visa pris i formulär"
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
-msgstr ""
+msgstr "Visa delars pris i vissa formulär"
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
-msgstr ""
+msgstr "Visa prishistorik"
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
-msgstr ""
+msgstr "Visa historisk prissättning för del"
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
-msgstr ""
+msgstr "Visa relaterade delar"
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
-msgstr ""
+msgstr "Visa relaterade delar för en del"
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
-msgstr ""
+msgstr "Skapa ursprungligt lager"
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
-msgstr ""
+msgstr "Skapa ursprungligt lager när delen skapas"
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
-msgstr ""
+msgstr "Interna priser"
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
-msgstr ""
+msgstr "Visningsformat för delnamn"
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
-msgstr ""
+msgstr "Formatera för att visa artikelnamnet"
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
-msgstr ""
+msgstr "Aktivera etikettutskrift"
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
-msgstr ""
+msgstr "Aktivera etikettutskrift från webbgränssnittet"
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
-msgstr ""
+msgstr "Etikettbild DPI"
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
-msgstr ""
+msgstr "Aktivera rapporter"
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
-msgstr ""
+msgstr "Aktivera generering av rapporter"
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
-msgstr ""
+msgstr "Debugläge"
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
-msgstr ""
+msgstr "Sidstorlek"
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
-msgstr ""
+msgstr "Standard sidstorlek för PDF-rapporter"
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
-msgstr ""
+msgstr "Aktivera testrapporter"
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr ""
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr ""
-
 #: company/models.py:98
 msgid "Company description"
 msgstr ""
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr ""
 
@@ -2707,9 +2774,9 @@ msgstr ""
 msgid "Does this company manufacture parts?"
 msgstr ""
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr ""
 
@@ -2717,9 +2784,9 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2745,11 +2812,11 @@ msgstr ""
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr ""
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr ""
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr ""
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr ""
 
@@ -2953,14 +3020,14 @@ msgstr ""
 msgid "Download image from URL"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -2977,6 +3044,11 @@ msgstr ""
 msgid "Upload Image"
 msgstr ""
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr ""
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr ""
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr ""
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr ""
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr ""
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr ""
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr ""
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr ""
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr ""
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr ""
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr ""
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr ""
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr ""
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "Bekräfta"
 
@@ -7542,7 +7603,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po
index 25109ce059..a08d70339d 100644
--- a/InvenTree/locale/th/LC_MESSAGES/django.po
+++ b/InvenTree/locale/th/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:41\n"
 "Last-Translator: \n"
 "Language-Team: Thai\n"
 "Language: th_TH\n"
@@ -25,196 +25,253 @@ msgstr ""
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr ""
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr ""
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr ""
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr ""
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr ""
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr ""
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr ""
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr ""
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr ""
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr ""
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr ""
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr ""
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr ""
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr ""
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr ""
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr ""
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr ""
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr ""
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr ""
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr ""
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr ""
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr ""
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr ""
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr ""
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr ""
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr ""
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr ""
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr ""
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr ""
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr ""
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr ""
 
@@ -273,56 +330,69 @@ msgstr ""
 msgid "Must be a valid number"
 msgstr ""
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr ""
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr ""
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr ""
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr ""
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr ""
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr ""
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr ""
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr ""
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr ""
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr ""
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr ""
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr ""
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr ""
 
@@ -461,8 +531,8 @@ msgstr ""
 msgid "Returned"
 msgstr ""
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr ""
 
@@ -546,7 +616,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr ""
 
@@ -554,7 +624,7 @@ msgstr ""
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr ""
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr ""
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr ""
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr ""
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr ""
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr ""
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
@@ -646,20 +710,20 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr ""
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr ""
 msgid "Build Orders"
 msgstr ""
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr ""
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr ""
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:240
+#: build/models.py:217
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr ""
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr ""
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr ""
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr ""
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr ""
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr ""
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr ""
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr ""
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr ""
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr ""
 
@@ -1360,8 +1424,8 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr ""
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr ""
 
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1438,7 +1502,7 @@ msgstr ""
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr ""
 
@@ -1581,985 +1645,997 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr ""
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr ""
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr ""
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr ""
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr ""
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr ""
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr ""
-
 #: company/models.py:98
 msgid "Company description"
 msgstr ""
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr ""
 
@@ -2707,9 +2774,9 @@ msgstr ""
 msgid "Does this company manufacture parts?"
 msgstr ""
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr ""
 
@@ -2717,9 +2784,9 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr ""
 
@@ -2745,11 +2812,11 @@ msgstr ""
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr ""
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr ""
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr ""
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr ""
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr ""
 
@@ -2953,14 +3020,14 @@ msgstr ""
 msgid "Download image from URL"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -2977,6 +3044,11 @@ msgstr ""
 msgid "Upload Image"
 msgstr ""
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr ""
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr ""
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr ""
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr ""
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr ""
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr ""
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr ""
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr ""
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr ""
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr ""
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr ""
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr ""
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr ""
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr ""
 
@@ -7542,7 +7603,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po
index 1d27c3553f..86d04d946d 100644
--- a/InvenTree/locale/tr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/tr/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Turkish\n"
 "Language: tr_TR\n"
@@ -25,196 +25,253 @@ msgstr "API uç noktası bulunamadı"
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "Tarih giriniz"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr "Notlar"
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "Şifrenizi girin"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "Lütfen Yeni Parolayı Girin"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Parolayı doğrulayın"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Yeni parolayı doğrulayın"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr ""
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "E-posta (tekrar)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "E-posta adresi onayı"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "Her seferind eaynı e-posta adresini yazmalısınız."
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr "Sağlanan URL geçerli bir resim dosyası değil"
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr "Tekrarlanan seri no:{sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "Geçersiz veri sağlandı"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "Boş seri numarası dizesi"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "Geçersiz grup: {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "Geçersiz grup: {group}"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "Seri numarası bulunamadı"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "Eksik dosya"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "Bozuk dış bağlantı"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "Ek"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "Eklenecek dosyayı seç"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "Bağlantı"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "Harici URL'ye bağlantı"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "Yorum"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "Dosya yorumu"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "Kullanıcı"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "yükleme tarihi"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "Dosya adı boş olamaz"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "Ek dosya yolu geçersiz"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "Dosya adı geçersiz karakterler içeriyor'{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "Dosya uzantısı yok"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "Aynı isimli başka bir dosya zaten var"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "Dosya adı değiştirilirken hata"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "Geçersiz seçim"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr "Geçersiz seçim"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "Adı"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "Açıklama"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "Açıklama (isteğe bağlı)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "üst"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr ""
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr ""
 
@@ -273,56 +330,69 @@ msgstr ""
 msgid "Must be a valid number"
 msgstr "Geçerli bir numara olmalı"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "Dosya adı"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr "Geçersiz değer"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr "Veri Dosyası"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr "Yüklemek istediğiniz dosyayı seçin"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr "Desteklenmeyen dsoya tipi"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "Dosya boyutu çok büyük"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr "Dosyada kolon bulunamadı"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr "Dosyada satır bulunamadı"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr "Dosyada satır bulunamadı"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr "Dosyada uygun kolon bulunamadı"
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr "Gerekli kolon ismi eksik:'{name}'"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "Tekrarlanan kolon ismi:'{col}'"
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr ""
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr "InvenTree sistem sağlık kontrolü başarısız"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "Bekliyor"
 
@@ -461,8 +531,8 @@ msgstr "Kayıp"
 msgid "Returned"
 msgstr "İade"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "Sevk edildi"
 
@@ -546,7 +616,7 @@ msgstr "Üst ögeden ayır"
 msgid "Split child item"
 msgstr "Alt ögeyi ayır"
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr "Stok parçalarını birleştir"
 
@@ -554,7 +624,7 @@ msgstr "Stok parçalarını birleştir"
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr "Müşteriye gönderildi"
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr "IPN regex kalıbıyla eşleşmelidir {pat}"
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr "Referans {pattern} deseniyle mutlaka eşleşmeli"
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr "({x}) adında geçersiz karakter"
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr "Fazlalık değeri negatif olmamalıdır"
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr "Fazlalık %100'ü geçmemelidir"
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
@@ -646,20 +710,20 @@ msgstr "InvenTree Hakkında"
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr "Yapım İşi Emri"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr "Yapım İşi Emri"
 msgid "Build Orders"
 msgstr "Yapım İşi Emirleri"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr "Yapım İşi Emri Referansı"
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr "Referans"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr "Yapım işinin kısa açıklaması"
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Üst Yapım İşi"
 
-#: build/models.py:209
+#: build/models.py:186
 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:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "Parça"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr "Yapım işi için parça seçin"
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr "Satış Emri Referansı"
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr "Bu yapım işinin tahsis edildiği satış emri"
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr "Kaynak Konum"
 
-#: build/models.py:240
+#: build/models.py:217
 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:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr "Hedef Konum"
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr "Tamamlanmış ögelerin saklanacağı konumu seçiniz"
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr "Yapım İşi Miktarı"
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr "Yapım işi stok kalemlerinin sayısı"
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr "Tamamlanmış ögeler"
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr "Tamamlanan stok kalemlerinin sayısı"
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr "Yapım İşi Durumu"
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr "Yapım işi durum kodu"
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr "Sıra numarası"
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr "Yapım işi çıktısı için sıra numarası"
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr "Oluşturulma tarihi"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr "Hedef tamamlama tarihi"
 
-#: build/models.py:286
+#: build/models.py:263
 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:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr "Tamamlama tarihi"
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr "tamamlayan"
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr "Veren"
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr "Bu yapım işi emrini veren kullanıcı"
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr "Sorumlu"
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr "Bu yapım işi emrinden sorumlu kullanıcı"
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr "Bu yapım işi emrinden sorumlu kullanıcı"
 msgid "External Link"
 msgstr "Harici Bağlantı"
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr "Yapım işi için ekstra notlar"
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr "Yapım işi çıktısı belirtilmedi"
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr "Yapım işi çıktısı zaten tamamlanmış"
 
-#: build/models.py:754
+#: build/models.py:731
 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:1162
+#: build/models.py:1143
 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:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr "Stok kalemi fazladan tahsis edilmiş"
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır"
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Seri numaralı stok için miktar bir olmalı"
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr "Yapım İşi"
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr "Yapım işi için tahsis edilen parçalar"
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr "Stok Kalemi"
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr "Kaynak stok kalemi"
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "Miktar"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr "Yapım işi için tahsis edilen stok miktarı"
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr "Kurulduğu yer"
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr "Hedef stok kalemi"
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr "Yapım işi çıktısı için miktarını girin"
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr "Seri Numaraları"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr "Yapım işi çıktısı için seri numaraları girin"
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr "Konum"
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr "Durum"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr "Gerekli stok tamamen tahsis edilemedi"
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr "Gerekli yapım işi miktarı tamamlanmadı"
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr ""
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ 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:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr "Hedeflenen tarih"
 
@@ -1303,35 +1367,35 @@ msgstr "Bu yapım işinin %(target)s tarihinde süresi doluyor"
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr "Vadesi geçmiş"
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr "Tamamlandı"
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr "Sipariş Emri"
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr "Veren"
 
@@ -1360,8 +1424,8 @@ 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:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr "Hedef"
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr "Toplu"
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr "Oluşturuldu"
 
@@ -1407,7 +1471,7 @@ msgstr "Alt Yapım İşi Emrileri"
 msgid "Allocate Stock to Build"
 msgstr "Yapım İşi için Stok Tahsis Et"
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr "Stok tahsisini kaldır"
 
@@ -1438,7 +1502,7 @@ msgstr "Gerekli parçaları sipariş edin"
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr "Parça Siparişi"
 
@@ -1581,985 +1645,997 @@ msgstr "{name.title()} Dosya"
 msgid "Select {name} file to upload"
 msgstr "{name} dosyasını yüklemek için seçin"
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr "Anahtar dizesi benzersiz olmalı"
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr ""
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr "Şirket adı"
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr "Ana URL"
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr "Varsayılan Para Birimi"
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr "Varsayılan para birimi"
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr "URL'den indir"
 
-#: common/models.py:848
+#: common/models.py:855
 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:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr "Barkod Desteği"
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr "Barkod tarayıcı desteğini etkinleştir"
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr "DPN Regex"
-
-#: common/models.py:869
-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:873
-msgid "Allow Duplicate IPN"
-msgstr "Yinelenen DPN'ye İzin Ver"
+msgid "Require confirm"
+msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
-msgstr "Birden çok parçanın aynı DPN'yi paylaşmasına izin ver"
+msgid "Require explicit user confirmation for certain action."
+msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
-msgstr "DPN Düzenlemeye İzin Ver"
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
+msgstr "Barkod Desteği"
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
-msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver"
+msgid "Enable barcode scanner support"
+msgstr "Barkod tarayıcı desteğini etkinleştir"
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
+msgid "IPN Regex"
+msgstr "DPN Regex"
+
+#: common/models.py:895
+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:899
+msgid "Allow Duplicate IPN"
+msgstr "Yinelenen DPN'ye İzin Ver"
+
+#: common/models.py:900
+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:906
+msgid "Allow Editing IPN"
+msgstr "DPN Düzenlemeye İzin Ver"
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver"
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr "Kategori Paremetre Sablonu Kopyala"
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr "Parça oluştururken kategori parametre şablonlarını kopyala"
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr "Şablon"
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr "Parçaları varsayılan olan şablondur"
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr "Montaj"
 
-#: common/models.py:923
+#: common/models.py:949
 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:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr "Bileşen"
 
-#: common/models.py:930
+#: common/models.py:956
 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:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr "Satın Alınabilir"
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr "Parçalar varsayılan olarak satın alınabilir"
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr "Satılabilir"
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr "Parçalar varsayılan olarak satılabilir"
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr "Takip Edilebilir"
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr "Parçalar varsayılan olarak takip edilebilir"
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr "Sanal"
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr "Parçalar varsayılan olarak sanaldır"
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr "Formlarda Fiyat Göster"
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr "İlgili parçaları göster"
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Hata Ayıklama Modu"
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Raporları hata ayıklama modunda üret (HTML çıktısı)"
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr "Sayfa Boyutu"
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr "PDF raporlar için varsayılan sayfa boyutu"
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr "günler"
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin"
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr "Formlarda Miktarı Göster"
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr "Fiyat"
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr "Aktif"
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr "Dosya Yükle"
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr "Alanları Eşleştir"
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr ""
-
 #: company/models.py:98
 msgid "Company description"
 msgstr ""
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr ""
 
@@ -2707,9 +2774,9 @@ msgstr "üretici mi"
 msgid "Does this company manufacture parts?"
 msgstr "Bu şirket üretim yapıyor mu?"
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr "Para birimi"
 
@@ -2717,9 +2784,9 @@ msgstr "Para birimi"
 msgid "Default currency used for this company"
 msgstr "Bu şirket için varsayılan para birimi"
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr "Temel Parça"
 
@@ -2731,11 +2798,11 @@ msgstr "Parça seçin"
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr "Üretici"
 
@@ -2745,11 +2812,11 @@ msgstr "Üretici seçin"
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr "ÜPN"
 
@@ -2778,8 +2845,8 @@ msgstr "Parametre adı"
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr "Değer"
@@ -2791,7 +2858,7 @@ msgstr "Parametre değeri"
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr "Tedarikçi"
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr "Tedarikçi seçin"
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr "Not"
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr "Paketleme"
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr "Mevcut"
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr "Para Birimi Kodu"
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr ""
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr "Satın Alma Emri Oluştur"
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr ""
 
@@ -2953,14 +3020,14 @@ msgstr ""
 msgid "Download image from URL"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr "Müşteri"
 
@@ -2977,6 +3044,11 @@ msgstr ""
 msgid "Upload Image"
 msgstr ""
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr "Resmi İndirin"
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr "Yeni Satış Emri"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr "Atanan Stok"
 
@@ -3082,7 +3154,7 @@ msgstr "Atanan Stok"
 msgid "Supplier List"
 msgstr ""
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr "Parça siparişi"
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr "Tedarikçi parçalarını sil"
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr "Tedarikçi Parçası"
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr "Fiyatlandırma"
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr "Stok Kalemleri"
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr "Yeni Tedarikçi"
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr "Yeni Üretici"
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr "Müşteriler"
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr "Yeni Müşteri"
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr "Şirketler"
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr "Yeni Şirket"
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr "Resmi İndirin"
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr "Geçersiz yanıt: {code}"
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr "Sağlanan URL geçerli bir resim dosyası değil"
-
 #: label/models.py:102
 msgid "Label name"
 msgstr "Etiket adı"
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr "Filtreler"
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr "Sipariş açıklaması"
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr "Harici sayfaya bağlantı"
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr "Oluşturan"
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr "Sipariş notları"
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr "Sipariş referansı"
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr "Tahsis miktarı stok miktarını aşamaz"
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr "Stok kalemi fazladan tahsis edilmiş"
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr "Seri numaralı stok kalemi için miktar bir olmalı"
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr "Tahsis miktarı stok miktarını aşamaz"
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr "Stok kalemi fazladan tahsis edilmiş"
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr "Seri numaralı stok kalemi için miktar bir olmalı"
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr "Stok tahsis miktarını girin"
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr "Tedarikçi Parçası Seçin"
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr "Sipariş Notları"
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr "İşlemler"
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr "Gerekli"
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ 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:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr "Çeşide İzin Ver"
 
@@ -4624,7 +4680,7 @@ msgstr "Çeşide İzin Ver"
 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:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr "Alt kategoriler"
@@ -4837,7 +4893,7 @@ msgstr "Parçalar (Alt kategoriler dahil)"
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr "Pasif"
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr "Bu parça %(link)s parçasının bir çeşididir"
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr "Hesapla"
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr "Toplam Maliyet"
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr "Yeni parça çeşidi oluştur"
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr "Hiçbiri"
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr "İçin Gerekli Olan"
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr "Seri Numara"
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr "Seri No"
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr "Bu seri numarasına sahip stok kalemi zaten var"
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr "Seri numarası olan ögenin miktarı bir olmalı"
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr "Miktar birden büyük ise seri numarası ayarlanamaz"
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr "Üst Stok Kalemi"
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr "Bu stok kalemi için tedarikçi parçası seçin"
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr "Stok kalemi stokta olmadığı için taşınamaz"
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr "Seri numaraları zaten mevcut"
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr "İşlem notu ekle (isteğe bağlı)"
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr "Konum ayarlanmadı"
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erdi"
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erecek"
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "Onay"
 
@@ -7542,7 +7603,7 @@ msgstr "Dosya Ekle"
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr "Cevap Yok"
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr "Ek Düzenle"
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr "Kapat"
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr "Seviyeler"
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr "Dışa aktarılan malzeme listesine parça tedarikçisi verilerini dahil edin"
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr "Gerekli Parça"
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr "Yapım işi emri eksik"
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr "Tamamlanmış Yapım İşi Emri"
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr "Bu Malzeme Listesi takip edilebilir parçalar içeriyor"
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr "Takip edilebilir parçaların seri numaraları belirtilmiş olmalı"
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr "Birden çok tek yapım işi çıktısı oluşturmak için seri numaraları girin"
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr "Yapım İşi Çıktısı Oluştur"
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr "Stok tahsisini düzenle"
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr "Stok tahsisini sil"
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "Parçaları Seçin"
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr "Şablon Parça"
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr "Tedarikçi parçasını düzenle"
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr "Tedarikçi parçasını sil"
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr "Ürünler"
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr "Stok tahsisini onayla"
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr "Silme İşlemini Onayla"
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr "Seri numaralarını tahsis et"
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr "Seri Numaralarını Tahsis Et"
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr "Çeşit bulunamadı"
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr "Katagori Yok"
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr "Detaylar"
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr "Konum artık yok"
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr "Çeşit Stokuna İzin Ver"
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr "Alt konumları dahil et"
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr "Konumları dahil et"
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
+#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:226
 msgid "Is Serialized"
 msgstr "Seri Numaralı"
 
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:147
+#: templates/js/translated/table_filters.js:233
 msgid "Serial number GTE"
 msgstr "Seri numarası BvE"
 
-#: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
+#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/table_filters.js:234
 msgid "Serial number greater than or equal to"
 msgstr "Seri numarası büyük veya eşit"
 
-#: templates/js/translated/table_filters.js:147
-#: templates/js/translated/table_filters.js:233
+#: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
 msgid "Serial number LTE"
 msgstr "Seri numarası KvE"
 
-#: templates/js/translated/table_filters.js:148
-#: templates/js/translated/table_filters.js:234
+#: templates/js/translated/table_filters.js:152
+#: templates/js/translated/table_filters.js:238
 msgid "Serial number less than or equal to"
 msgstr "Seri numarası küçük veya eşit"
 
-#: templates/js/translated/table_filters.js:151
-#: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr "Seri numarası"
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr "Alt konumlardaki stoku dahil et"
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr "Çeşitleri Dahil Et"
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr "Çeşit parçaların stok kalemlerini dahil et"
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr "Alt kategorilerdeki parçaları dahil et"
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr "DPN Var"
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po
index 0e56ecad5e..aa8d69c571 100644
--- a/InvenTree/locale/vi/LC_MESSAGES/django.po
+++ b/InvenTree/locale/vi/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-07 02:44\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Vietnamese\n"
 "Language: vi_VN\n"
@@ -25,196 +25,253 @@ msgstr ""
 msgid "Error details can be found in the admin panel"
 msgstr ""
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr ""
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr ""
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr ""
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr ""
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "Xác nhận mật khẩu"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "Xác nhận mật khẩu mới"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr ""
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr ""
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr ""
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr ""
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
 msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
 msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr ""
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr ""
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr ""
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr ""
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr ""
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "Bình luận"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "Người dùng"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "Ngày tải lên"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "Tên tập tin không được để trống"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr ""
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr ""
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr ""
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr ""
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr ""
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr ""
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr ""
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "Mô tả"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "Mô tả (tùy chọn)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr ""
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr ""
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr ""
 
@@ -273,56 +330,69 @@ msgstr ""
 msgid "Must be a valid number"
 msgstr ""
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "Tên tập tin"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr ""
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr ""
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr ""
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr ""
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr ""
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr ""
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr ""
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr ""
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr ""
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr ""
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr ""
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr ""
 
@@ -461,8 +531,8 @@ msgstr ""
 msgid "Returned"
 msgstr ""
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr ""
 
@@ -546,7 +616,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr ""
 
@@ -554,7 +624,7 @@ msgstr ""
 msgid "Converted to variant"
 msgstr ""
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr ""
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr ""
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr ""
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr ""
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr ""
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr ""
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr ""
 
@@ -646,20 +710,20 @@ msgstr "Giới thiệu"
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr "Tạo đơn hàng"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr "Tạo đơn hàng"
 msgid "Build Orders"
 msgstr "Tạo đơn hàng"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr ""
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "Nguyên liệu"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:240
+#: build/models.py:217
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr "Ngày hoàn thành"
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr ""
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr ""
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr ""
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr ""
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr ""
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr ""
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr ""
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr ""
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr ""
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr ""
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr ""
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr ""
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr ""
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr ""
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr "Trạng thái"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr ""
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr ""
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr ""
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr ""
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr ""
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr ""
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr ""
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr ""
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr ""
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr ""
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr ""
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr ""
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr ""
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr ""
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr ""
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr ""
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr ""
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr ""
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr ""
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr ""
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr ""
 
@@ -1303,35 +1367,35 @@ msgstr ""
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr ""
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr "Đã hoàn thành"
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr ""
 
@@ -1360,8 +1424,8 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr ""
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr ""
 
@@ -1407,7 +1471,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1438,7 +1502,7 @@ msgstr ""
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr ""
 
@@ -1581,985 +1645,997 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr ""
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr ""
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr ""
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
+msgid "Enable barcode scanner support"
 msgstr ""
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr ""
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr ""
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr "Hiển thị nguyên liệu mới nhất"
 
-#: common/models.py:1326
+#: common/models.py:1350
 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:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr ""
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr ""
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr ""
 
@@ -2611,15 +2687,6 @@ msgstr ""
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr ""
-
 #: company/models.py:98
 msgid "Company description"
 msgstr ""
@@ -2630,7 +2697,7 @@ msgstr ""
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr ""
 
@@ -2707,9 +2774,9 @@ msgstr ""
 msgid "Does this company manufacture parts?"
 msgstr ""
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr ""
 
@@ -2717,9 +2784,9 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr "Nhà sản xuất"
 
@@ -2745,11 +2812,11 @@ msgstr ""
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr ""
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr ""
@@ -2791,7 +2858,7 @@ msgstr ""
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr ""
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr "Nhà cung cấp"
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr ""
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr ""
 
@@ -2860,7 +2927,7 @@ msgstr ""
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr ""
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr ""
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr ""
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr ""
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr ""
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr ""
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr ""
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr ""
 
@@ -2953,14 +3020,14 @@ msgstr ""
 msgid "Download image from URL"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr ""
 
@@ -2977,6 +3044,11 @@ msgstr ""
 msgid "Upload Image"
 msgstr ""
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr ""
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr ""
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr ""
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr ""
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr ""
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr ""
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr ""
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr ""
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr ""
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr ""
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr ""
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr ""
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr ""
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr ""
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr ""
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr ""
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr ""
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr ""
-
 #: label/models.py:102
 msgid "Label name"
 msgstr ""
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr ""
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr ""
 
@@ -3422,438 +3477,438 @@ msgstr ""
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr ""
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr "Đơn hàng"
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr "Giá mua"
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr ""
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr ""
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr ""
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr ""
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr ""
@@ -4837,7 +4893,7 @@ msgstr ""
 msgid "Create new part"
 msgstr ""
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr ""
 
@@ -4862,19 +4918,19 @@ msgstr ""
 msgid "Part Parameters"
 msgstr ""
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr ""
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr ""
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr ""
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr ""
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr ""
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr ""
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr ""
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr ""
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr ""
 
@@ -7542,7 +7603,7 @@ msgstr ""
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr ""
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr ""
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr "Số seri mới nhất"
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr ""
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr ""
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr ""
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr ""
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr ""
 
@@ -8289,99 +8338,99 @@ msgstr ""
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr ""
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr ""
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr ""
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr ""
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr ""
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr ""
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr ""
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr ""
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr ""
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr ""
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""
 
diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po
index 732faeb74a..760e87073d 100644
--- a/InvenTree/locale/zh/LC_MESSAGES/django.po
+++ b/InvenTree/locale/zh/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-07-06 05:29+0000\n"
-"PO-Revision-Date: 2022-07-08 02:49\n"
+"POT-Creation-Date: 2022-07-25 01:24+0000\n"
+"PO-Revision-Date: 2022-07-25 01:40\n"
 "Last-Translator: \n"
 "Language-Team: Chinese Simplified\n"
 "Language: zh_CN\n"
@@ -25,196 +25,253 @@ msgstr "未找到 API 端点"
 msgid "Error details can be found in the admin panel"
 msgstr "在管理面板中可以找到错误详细信息"
 
-#: InvenTree/fields.py:94
+#: InvenTree/fields.py:99
 msgid "Enter date"
 msgstr "输入日期"
 
-#: InvenTree/fields.py:171 build/serializers.py:374
+#: InvenTree/fields.py:176 build/serializers.py:384
 #: build/templates/build/sidebar.html:21 company/models.py:523
-#: company/templates/company/sidebar.html:25 order/models.py:929
+#: company/templates/company/sidebar.html:25 order/models.py:906
 #: order/templates/order/po_sidebar.html:11
 #: order/templates/order/so_sidebar.html:17
 #: part/templates/part/part_sidebar.html:59
-#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:1994 stock/models.py:2102 stock/serializers.py:327
-#: stock/serializers.py:456 stock/serializers.py:537 stock/serializers.py:810
-#: stock/serializers.py:909 stock/serializers.py:1041
+#: report/templates/report/inventree_build_order_base.html:172
+#: stock/models.py:1993 stock/models.py:2101 stock/serializers.py:328
+#: stock/serializers.py:457 stock/serializers.py:538 stock/serializers.py:811
+#: stock/serializers.py:910 stock/serializers.py:1042
 #: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
-#: templates/js/translated/company.js:949 templates/js/translated/order.js:2040
-#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2698
-#: templates/js/translated/order.js:3651 templates/js/translated/order.js:4049
-#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1979
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1101
+#: templates/js/translated/company.js:964 templates/js/translated/order.js:2081
+#: templates/js/translated/order.js:2232 templates/js/translated/order.js:2730
+#: templates/js/translated/order.js:3681 templates/js/translated/order.js:4079
+#: templates/js/translated/stock.js:1370 templates/js/translated/stock.js:1976
 msgid "Notes"
 msgstr "备注"
 
-#: InvenTree/forms.py:134
+#: InvenTree/format.py:142
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:152
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:133
 msgid "Enter password"
 msgstr "输入密码"
 
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:134
 msgid "Enter new password"
 msgstr "输入新密码"
 
-#: InvenTree/forms.py:144
+#: InvenTree/forms.py:143
 msgid "Confirm password"
 msgstr "确认密码"
 
-#: InvenTree/forms.py:145
+#: InvenTree/forms.py:144
 msgid "Confirm new password"
 msgstr "确认新密码"
 
-#: InvenTree/forms.py:149
+#: InvenTree/forms.py:148
 msgid "Old password"
 msgstr "旧密码"
 
-#: InvenTree/forms.py:178
+#: InvenTree/forms.py:177
 msgid "Email (again)"
 msgstr "Email (再次)"
 
-#: InvenTree/forms.py:182
+#: InvenTree/forms.py:181
 msgid "Email address confirmation"
 msgstr "Email 地址确认"
 
-#: InvenTree/forms.py:203
+#: InvenTree/forms.py:202
 msgid "You must type the same email each time."
 msgstr "您必须输入相同的 Email 。"
 
-#: InvenTree/forms.py:282 common/models.py:1843
-msgid "Token"
-msgstr "令牌"
+#: InvenTree/helpers.py:135
+msgid "Connection error"
+msgstr ""
 
-#: InvenTree/forms.py:305
-msgid "The entered token is not valid"
-msgstr "输入的令牌无效"
+#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
+msgid "Server responded with invalid status code"
+msgstr ""
 
-#: InvenTree/helpers.py:404
+#: InvenTree/helpers.py:141
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers.py:149
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers.py:152
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers.py:164
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers.py:169
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers.py:177
+msgid "Supplied URL is not a valid image file"
+msgstr "提供的 URL 不是一个有效的图片文件"
+
+#: InvenTree/helpers.py:520
 #, python-brace-format
 msgid "Duplicate serial: {sn}"
 msgstr "重复的序列号: {sn}"
 
-#: InvenTree/helpers.py:411 order/models.py:357 order/models.py:509
+#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
 msgid "Invalid quantity provided"
 msgstr "提供的数量无效"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:530
 msgid "Empty serial number string"
 msgstr "空序列号字符串"
 
-#: InvenTree/helpers.py:446
+#: InvenTree/helpers.py:562
 #, python-brace-format
 msgid "Invalid group range: {g}"
 msgstr "无效的组范围: {g}"
 
-#: InvenTree/helpers.py:449
+#: InvenTree/helpers.py:565
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "无效的群组: {g}"
 
-#: InvenTree/helpers.py:477
+#: InvenTree/helpers.py:593
 #, python-brace-format
 msgid "Invalid group sequence: {g}"
 msgstr "无效的组序列: {g}"
 
-#: InvenTree/helpers.py:485
+#: InvenTree/helpers.py:601
 #, python-brace-format
 msgid "Invalid/no group {group}"
 msgstr "无效的群组: {group}"
 
-#: InvenTree/helpers.py:491
+#: InvenTree/helpers.py:607
 msgid "No serial numbers found"
 msgstr "未找到序列号"
 
-#: InvenTree/helpers.py:495
+#: InvenTree/helpers.py:611
 #, python-brace-format
 msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgstr "唯一序列号 ({s}) 必须匹配数量 ({q})"
 
-#: InvenTree/models.py:178
+#: InvenTree/models.py:236
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:243
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:249
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:261
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:268
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:304
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:382
 msgid "Missing file"
 msgstr "缺少文件"
 
-#: InvenTree/models.py:179
+#: InvenTree/models.py:383
 msgid "Missing external link"
 msgstr "缺少外部链接"
 
-#: InvenTree/models.py:191 stock/models.py:2096
+#: InvenTree/models.py:395 stock/models.py:2095
 #: templates/js/translated/attachment.js:103
-#: templates/js/translated/attachment.js:240
+#: templates/js/translated/attachment.js:241
 msgid "Attachment"
 msgstr "附件"
 
-#: InvenTree/models.py:192
+#: InvenTree/models.py:396
 msgid "Select file to attach"
 msgstr "选择附件"
 
-#: InvenTree/models.py:198 company/models.py:124 company/models.py:276
-#: company/models.py:510 order/models.py:136 order/models.py:1267
+#: InvenTree/models.py:402 company/models.py:124 company/models.py:276
+#: company/models.py:510 order/models.py:84 order/models.py:1245
 #: part/models.py:795
-#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:642
-#: templates/js/translated/company.js:933 templates/js/translated/order.js:2687
+#: report/templates/report/inventree_build_order_base.html:164
+#: templates/js/translated/company.js:656
+#: templates/js/translated/company.js:948 templates/js/translated/order.js:2719
 #: templates/js/translated/part.js:1510
 msgid "Link"
 msgstr "链接"
 
-#: InvenTree/models.py:199 build/models.py:319 part/models.py:796
+#: InvenTree/models.py:403 build/models.py:296 part/models.py:796
 #: stock/models.py:651
 msgid "Link to external URL"
 msgstr "链接到外部 URL"
 
-#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
-#: templates/js/translated/attachment.js:284
+#: InvenTree/models.py:406 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:285
 msgid "Comment"
 msgstr "注释"
 
-#: InvenTree/models.py:202
+#: InvenTree/models.py:406
 msgid "File comment"
 msgstr "文件注释"
 
-#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1612
-#: common/models.py:1613 common/models.py:1836 common/models.py:1837
-#: common/models.py:2099 common/models.py:2100 part/models.py:2193
+#: InvenTree/models.py:412 InvenTree/models.py:413 common/models.py:1636
+#: common/models.py:1637 common/models.py:1860 common/models.py:1861
+#: common/models.py:2123 common/models.py:2124 part/models.py:2193
 #: part/models.py:2213 plugin/models.py:238 plugin/models.py:239
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2576
+#: templates/js/translated/stock.js:2573
 msgid "User"
 msgstr "用户"
 
-#: InvenTree/models.py:212
+#: InvenTree/models.py:416
 msgid "upload date"
 msgstr "上传日期"
 
-#: InvenTree/models.py:234
+#: InvenTree/models.py:438
 msgid "Filename must not be empty"
 msgstr "文件名不能为空!"
 
-#: InvenTree/models.py:257
+#: InvenTree/models.py:461
 msgid "Invalid attachment directory"
 msgstr "非法的附件目录"
 
-#: InvenTree/models.py:267
+#: InvenTree/models.py:471
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
 msgstr "文件名包含非法字符 '{c}'"
 
-#: InvenTree/models.py:270
+#: InvenTree/models.py:474
 msgid "Filename missing extension"
 msgstr "缺少文件名扩展"
 
-#: InvenTree/models.py:277
+#: InvenTree/models.py:481
 msgid "Attachment with this filename already exists"
 msgstr "使用此文件名的附件已存在"
 
-#: InvenTree/models.py:284
+#: InvenTree/models.py:488
 msgid "Error renaming file"
 msgstr "重命名文件出错"
 
-#: InvenTree/models.py:318
+#: InvenTree/models.py:522
 msgid "Invalid choice"
 msgstr "选择无效"
 
-#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1822
+#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
 #: company/models.py:358 label/models.py:101 part/models.py:739
 #: part/models.py:2371 plugin/models.py:93 report/models.py:151
 #: templates/InvenTree/settings/mixins/urls.html:13
@@ -222,50 +279,50 @@ msgstr "选择无效"
 #: templates/InvenTree/settings/plugin.html:132
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:347
-#: templates/js/translated/company.js:532
-#: templates/js/translated/company.js:744
+#: templates/js/translated/company.js:545
+#: templates/js/translated/company.js:758
 #: templates/js/translated/notification.js:71
 #: templates/js/translated/part.js:684 templates/js/translated/part.js:836
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2346
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2343
 msgid "Name"
 msgstr "名称"
 
-#: InvenTree/models.py:344 build/models.py:196
+#: InvenTree/models.py:547 build/models.py:174
 #: build/templates/build/detail.html:24 company/models.py:282
 #: company/models.py:516 company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:87 label/models.py:108
-#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:167 report/models.py:164
-#: report/models.py:509 report/models.py:550
-#: report/templates/report/inventree_build_order_base.html:118
+#: report/models.py:507 report/models.py:552
+#: report/templates/report/inventree_build_order_base.html:117
 #: stock/templates/stock/location.html:103
 #: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
-#: templates/js/translated/build.js:2480 templates/js/translated/company.js:397
-#: templates/js/translated/company.js:653
-#: templates/js/translated/company.js:944 templates/js/translated/order.js:1656
-#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:743 templates/js/translated/part.js:1151
+#: templates/js/translated/bom.js:554 templates/js/translated/bom.js:848
+#: templates/js/translated/build.js:2471 templates/js/translated/company.js:409
+#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:959 templates/js/translated/order.js:1697
+#: templates/js/translated/order.js:1929 templates/js/translated/order.js:2508
+#: templates/js/translated/part.js:743 templates/js/translated/part.js:1149
 #: templates/js/translated/part.js:1424 templates/js/translated/part.js:1876
 #: templates/js/translated/part.js:1945 templates/js/translated/stock.js:1739
-#: templates/js/translated/stock.js:2358 templates/js/translated/stock.js:2413
+#: templates/js/translated/stock.js:2355 templates/js/translated/stock.js:2410
 msgid "Description"
 msgstr "描述信息"
 
-#: InvenTree/models.py:345
+#: InvenTree/models.py:548
 msgid "Description (optional)"
 msgstr "描述 (可选)"
 
-#: InvenTree/models.py:353
+#: InvenTree/models.py:556
 msgid "parent"
 msgstr "上级项"
 
-#: InvenTree/models.py:466
+#: InvenTree/models.py:669
 msgid "Server Error"
 msgstr "服务器错误"
 
-#: InvenTree/models.py:467
+#: InvenTree/models.py:670
 msgid "An error has been logged by the server."
 msgstr "服务器记录了一个错误。"
 
@@ -273,56 +330,69 @@ msgstr "服务器记录了一个错误。"
 msgid "Must be a valid number"
 msgstr "必须是有效数字"
 
-#: InvenTree/serializers.py:264
+#: InvenTree/serializers.py:254
 msgid "Filename"
 msgstr "文件名"
 
-#: InvenTree/serializers.py:299
+#: InvenTree/serializers.py:289
 msgid "Invalid value"
 msgstr "无效值"
 
-#: InvenTree/serializers.py:321
+#: InvenTree/serializers.py:311
 msgid "Data File"
 msgstr "数据文件"
 
-#: InvenTree/serializers.py:322
+#: InvenTree/serializers.py:312
 msgid "Select data file for upload"
 msgstr "选择要上传的文件"
 
-#: InvenTree/serializers.py:343
+#: InvenTree/serializers.py:333
 msgid "Unsupported file type"
 msgstr "不支持的文件类型"
 
-#: InvenTree/serializers.py:349
+#: InvenTree/serializers.py:339
 msgid "File is too large"
 msgstr "文件过大"
 
-#: InvenTree/serializers.py:370
+#: InvenTree/serializers.py:360
 msgid "No columns found in file"
 msgstr "在文件中没有找到列"
 
-#: InvenTree/serializers.py:373
+#: InvenTree/serializers.py:363
 msgid "No data rows found in file"
 msgstr "在文件中没有找到数据行"
 
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:486
 msgid "No data rows provided"
 msgstr "没有提供数据行"
 
-#: InvenTree/serializers.py:499
+#: InvenTree/serializers.py:489
 msgid "No data columns supplied"
 msgstr "没有提供数据列"
 
-#: InvenTree/serializers.py:576
+#: InvenTree/serializers.py:566
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr "缺少必需的列:'{name}'"
 
-#: InvenTree/serializers.py:585
+#: InvenTree/serializers.py:575
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "复制列: '{col}'"
 
+#: InvenTree/serializers.py:594
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: InvenTree/serializers.py:595
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:609
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
 #: InvenTree/settings.py:698
 msgid "Czech"
 msgstr "捷克语"
@@ -432,7 +502,7 @@ msgid "InvenTree system health checks failed"
 msgstr "InventTree系统健康检查失败"
 
 #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:330
+#: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:334
 msgid "Pending"
 msgstr "待定"
 
@@ -461,8 +531,8 @@ msgstr "丢失"
 msgid "Returned"
 msgstr "已退回"
 
-#: InvenTree/status_codes.py:141 order/models.py:1150
-#: templates/js/translated/order.js:3277 templates/js/translated/order.js:3626
+#: InvenTree/status_codes.py:141 order/models.py:1128
+#: templates/js/translated/order.js:3307 templates/js/translated/order.js:3656
 msgid "Shipped"
 msgstr "已发货"
 
@@ -546,7 +616,7 @@ msgstr "从父项拆分"
 msgid "Split child item"
 msgstr "拆分子项"
 
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2083
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2080
 msgid "Merged stock items"
 msgstr "合并的库存项目"
 
@@ -554,7 +624,7 @@ msgstr "合并的库存项目"
 msgid "Converted to variant"
 msgstr "转换为变量"
 
-#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:217
+#: InvenTree/status_codes.py:285 templates/js/translated/table_filters.js:221
 msgid "Sent to customer"
 msgstr "发送给客户"
 
@@ -596,25 +666,19 @@ msgid "IPN must match regex pattern {pat}"
 msgstr "IPN 必须匹配正则表达式 {pat}"
 
 #: InvenTree/validators.py:68 InvenTree/validators.py:79
-#: InvenTree/validators.py:90
 #, python-brace-format
 msgid "Reference must match pattern {pattern}"
 msgstr "引用必须匹配模板 {pattern}"
 
-#: InvenTree/validators.py:97
-#, python-brace-format
-msgid "Illegal character in name ({x})"
-msgstr "名称中存在非法字符 ({x})"
-
-#: InvenTree/validators.py:116 InvenTree/validators.py:132
+#: InvenTree/validators.py:102 InvenTree/validators.py:118
 msgid "Overage value must not be negative"
 msgstr "备损值不能为负数"
 
-#: InvenTree/validators.py:134
+#: InvenTree/validators.py:120
 msgid "Overage must not exceed 100%"
 msgstr "备损不能超过 100%"
 
-#: InvenTree/validators.py:141
+#: InvenTree/validators.py:127
 msgid "Invalid value for overage"
 msgstr "无效的备损值"
 
@@ -646,20 +710,20 @@ msgstr "关于 InventTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "在删除前必须取消生产"
 
-#: build/models.py:125
+#: build/models.py:105
 msgid "Invalid choice for parent build"
 msgstr "上级生产选项无效"
 
-#: build/models.py:130 build/templates/build/build_base.html:9
+#: build/models.py:110 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
-#: report/templates/report/inventree_build_order_base.html:106
+#: 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:732
+#: templates/js/translated/build.js:731
 msgid "Build Order"
 msgstr "生产订单"
 
-#: build/models.py:131 build/templates/build/build_base.html:13
+#: build/models.py:111 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
 #: order/templates/order/sales_order_detail.html:120
 #: order/templates/order/so_sidebar.html:13
@@ -669,178 +733,178 @@ msgstr "生产订单"
 msgid "Build Orders"
 msgstr "生产订单"
 
-#: build/models.py:187
+#: build/models.py:165
 msgid "Build Order Reference"
 msgstr "相关生产订单"
 
-#: build/models.py:188 order/models.py:280 order/models.py:649
-#: order/models.py:927 part/models.py:2610
+#: build/models.py:166 order/models.py:240 order/models.py:623
+#: order/models.py:904 part/models.py:2610
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
-#: templates/js/translated/build.js:1781 templates/js/translated/order.js:1919
-#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3470
-#: templates/js/translated/order.js:3978
+#: templates/js/translated/bom.js:692 templates/js/translated/bom.js:855
+#: templates/js/translated/build.js:1779 templates/js/translated/order.js:1960
+#: templates/js/translated/order.js:2161 templates/js/translated/order.js:3500
+#: templates/js/translated/order.js:4008
 msgid "Reference"
 msgstr "引用"
 
-#: build/models.py:199
+#: build/models.py:177
 msgid "Brief description of the build"
 msgstr "生产的简短描述."
 
-#: build/models.py:208 build/templates/build/build_base.html:169
+#: build/models.py:185 build/templates/build/build_base.html:169
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "上级生产"
 
-#: build/models.py:209
+#: build/models.py:186
 msgid "BuildOrder to which this build is allocated"
 msgstr "此次生产匹配的订单"
 
-#: build/models.py:214 build/templates/build/build_base.html:77
+#: build/models.py:191 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:29 company/models.py:670
-#: order/models.py:1023 order/models.py:1134 order/models.py:1135
+#: order/models.py:1001 order/models.py:1112 order/models.py:1113
 #: part/models.py:336 part/models.py:2139 part/models.py:2154
 #: part/models.py:2173 part/models.py:2191 part/models.py:2290
 #: part/models.py:2410 part/models.py:2500 part/models.py:2585
-#: part/models.py:2861 part/serializers.py:763
+#: part/models.py:2861 part/serializers.py:800
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_build_order_base.html:110
+#: report/templates/report/inventree_build_order_base.html:109
 #: report/templates/report/inventree_po_report.html:89
-#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:86
-#: stock/serializers.py:490 templates/InvenTree/search.html:80
+#: report/templates/report/inventree_so_report.html:90 stock/serializers.py:87
+#: stock/serializers.py:491 templates/InvenTree/search.html:80
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
 #: templates/email/low_stock_notification.html:16
 #: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
-#: templates/js/translated/build.js:1158 templates/js/translated/build.js:1651
-#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2485
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:484
-#: templates/js/translated/company.js:594
-#: templates/js/translated/company.js:853 templates/js/translated/order.js:100
-#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
-#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2830
-#: templates/js/translated/order.js:3228 templates/js/translated/order.js:3454
-#: templates/js/translated/part.js:1136 templates/js/translated/part.js:1206
+#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:553
+#: templates/js/translated/bom.js:691 templates/js/translated/bom.js:802
+#: templates/js/translated/build.js:1156 templates/js/translated/build.js:1649
+#: templates/js/translated/build.js:2085 templates/js/translated/build.js:2476
+#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:868 templates/js/translated/order.js:103
+#: templates/js/translated/order.js:934 templates/js/translated/order.js:1364
+#: templates/js/translated/order.js:1914 templates/js/translated/order.js:2862
+#: templates/js/translated/order.js:3258 templates/js/translated/order.js:3484
+#: templates/js/translated/part.js:1134 templates/js/translated/part.js:1206
 #: templates/js/translated/part.js:1402 templates/js/translated/stock.js:582
 #: templates/js/translated/stock.js:747 templates/js/translated/stock.js:954
-#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2439
-#: templates/js/translated/stock.js:2634 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:1696 templates/js/translated/stock.js:2436
+#: templates/js/translated/stock.js:2631 templates/js/translated/stock.js:2765
 msgid "Part"
 msgstr "商品"
 
-#: build/models.py:222
+#: build/models.py:199
 msgid "Select part to build"
 msgstr "选择要生产的商品"
 
-#: build/models.py:227
+#: build/models.py:204
 msgid "Sales Order Reference"
 msgstr "相关销售订单"
 
-#: build/models.py:231
+#: build/models.py:208
 msgid "SalesOrder to which this build is allocated"
 msgstr "此次生产匹配的销售订单"
 
-#: build/models.py:236 build/serializers.py:774
-#: templates/js/translated/build.js:2075 templates/js/translated/order.js:2818
+#: build/models.py:213 build/serializers.py:784
+#: templates/js/translated/build.js:2073 templates/js/translated/order.js:2850
 msgid "Source Location"
 msgstr "来源地点"
 
-#: build/models.py:240
+#: build/models.py:217
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "此次生产从哪个仓储位置获取库存(留空即可从任何仓储位置取出)"
 
-#: build/models.py:245
+#: build/models.py:222
 msgid "Destination Location"
 msgstr "目标地点"
 
-#: build/models.py:249
+#: build/models.py:226
 msgid "Select location where the completed items will be stored"
 msgstr "选择已完成项目仓储地点"
 
-#: build/models.py:253
+#: build/models.py:230
 msgid "Build Quantity"
 msgstr "生产数量"
 
-#: build/models.py:256
+#: build/models.py:233
 msgid "Number of stock items to build"
 msgstr "要生产的项目数量"
 
-#: build/models.py:260
+#: build/models.py:237
 msgid "Completed items"
 msgstr "已完成项目"
 
-#: build/models.py:262
+#: build/models.py:239
 msgid "Number of stock items which have been completed"
 msgstr "已完成的库存项目数量"
 
-#: build/models.py:266
+#: build/models.py:243
 msgid "Build Status"
 msgstr "生产状态"
 
-#: build/models.py:270
+#: build/models.py:247
 msgid "Build status code"
 msgstr "生产状态代码"
 
-#: build/models.py:274 build/serializers.py:215 order/serializers.py:440
-#: stock/models.py:655 templates/js/translated/order.js:1175
+#: build/models.py:251 build/serializers.py:225 order/serializers.py:447
+#: stock/models.py:655 templates/js/translated/order.js:1224
 msgid "Batch Code"
 msgstr "批量代码"
 
-#: build/models.py:278 build/serializers.py:216
+#: build/models.py:255 build/serializers.py:226
 msgid "Batch code for this build output"
 msgstr "此生产产出的批量代码"
 
-#: build/models.py:281 order/models.py:138 part/models.py:931
-#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
+#: build/models.py:258 order/models.py:86 part/models.py:931
+#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2521
 msgid "Creation Date"
 msgstr "创建日期"
 
-#: build/models.py:285 order/models.py:671
+#: build/models.py:262 order/models.py:648
 msgid "Target completion date"
 msgstr "预计完成日期"
 
-#: build/models.py:286
+#: build/models.py:263
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "生产完成的目标日期。生产将在此日期之后逾期。"
 
-#: build/models.py:289 order/models.py:323
-#: templates/js/translated/build.js:2562
+#: build/models.py:266 order/models.py:286
+#: templates/js/translated/build.js:2553
 msgid "Completion Date"
 msgstr "完成日期:"
 
-#: build/models.py:295
+#: build/models.py:272
 msgid "completed by"
 msgstr "完成人"
 
-#: build/models.py:303 templates/js/translated/build.js:2530
+#: build/models.py:280 templates/js/translated/build.js:2521
 msgid "Issued by"
 msgstr "发布者"
 
-#: build/models.py:304
+#: build/models.py:281
 msgid "User who issued this build order"
 msgstr "发布此生产订单的用户"
 
-#: build/models.py:312 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:152
+#: build/models.py:289 build/templates/build/build_base.html:190
+#: build/templates/build/detail.html:115 order/models.py:100
 #: order/templates/order/order_base.html:176
 #: order/templates/order/sales_order_base.html:183 part/models.py:935
-#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2542 templates/js/translated/order.js:1690
+#: report/templates/report/inventree_build_order_base.html:158
+#: templates/js/translated/build.js:2533 templates/js/translated/order.js:1731
 msgid "Responsible"
 msgstr "责任人"
 
-#: build/models.py:313
+#: build/models.py:290
 msgid "User responsible for this build order"
 msgstr "负责此生产订单的用户"
 
-#: build/models.py:318 build/templates/build/detail.html:101
+#: build/models.py:295 build/templates/build/detail.html:101
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:153
 #: part/templates/part/part_base.html:346 stock/models.py:649
@@ -848,364 +912,364 @@ msgstr "负责此生产订单的用户"
 msgid "External Link"
 msgstr "外部链接"
 
-#: build/models.py:323
+#: build/models.py:300
 msgid "Extra build notes"
 msgstr "额外的生产备注"
 
-#: build/models.py:561
+#: build/models.py:538
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "生产订单 {build} 已完成"
 
-#: build/models.py:567
+#: build/models.py:544
 msgid "A build order has been completed"
 msgstr "生产订单已完成"
 
-#: build/models.py:748
+#: build/models.py:725
 msgid "No build output specified"
 msgstr "未指定生产产出"
 
-#: build/models.py:751
+#: build/models.py:728
 msgid "Build output is already completed"
 msgstr "生产产出已完成"
 
-#: build/models.py:754
+#: build/models.py:731
 msgid "Build output does not match Build Order"
 msgstr "生产产出与订单不匹配"
 
-#: build/models.py:1162
+#: build/models.py:1143
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "生产项必须指定生产产出,因为主部件已经被标记为可追踪的"
 
-#: build/models.py:1171
+#: build/models.py:1152
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})"
 
-#: build/models.py:1181
+#: build/models.py:1162
 msgid "Stock item is over-allocated"
 msgstr "库存物品分配过度!"
 
-#: build/models.py:1187 order/models.py:1404
+#: build/models.py:1168 order/models.py:1382
 msgid "Allocation quantity must be greater than zero"
 msgstr "分配数量必须大于0"
 
-#: build/models.py:1193
+#: build/models.py:1174
 msgid "Quantity must be 1 for serialized stock"
 msgstr "序列化库存的数量必须是 1"
 
-#: build/models.py:1250
+#: build/models.py:1231
 msgid "Selected stock item not found in BOM"
 msgstr "在BOM中找不到选定的库存项"
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:177
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2458
+#: build/models.py:1300 stock/templates/stock/item_base.html:177
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2455
 #: templates/navbar.html:38
 msgid "Build"
 msgstr "生产"
 
-#: build/models.py:1320
+#: build/models.py:1301
 msgid "Build to allocate parts"
 msgstr "生产以分配部件"
 
-#: build/models.py:1336 build/serializers.py:619 order/serializers.py:996
-#: order/serializers.py:1017 stock/serializers.py:394 stock/serializers.py:741
-#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
+#: build/models.py:1317 build/serializers.py:629 order/serializers.py:1015
+#: order/serializers.py:1036 stock/serializers.py:395 stock/serializers.py:742
+#: stock/serializers.py:868 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:199
-#: templates/js/translated/build.js:743 templates/js/translated/build.js:748
-#: templates/js/translated/build.js:2089 templates/js/translated/build.js:2647
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:2831
-#: templates/js/translated/order.js:3135 templates/js/translated/order.js:3140
-#: templates/js/translated/order.js:3235 templates/js/translated/order.js:3327
+#: templates/js/translated/build.js:741 templates/js/translated/build.js:746
+#: templates/js/translated/build.js:2087 templates/js/translated/build.js:2638
+#: templates/js/translated/order.js:104 templates/js/translated/order.js:2863
+#: templates/js/translated/order.js:3165 templates/js/translated/order.js:3170
+#: templates/js/translated/order.js:3265 templates/js/translated/order.js:3357
 #: templates/js/translated/stock.js:583 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:2512
+#: templates/js/translated/stock.js:2509
 msgid "Stock Item"
 msgstr "库存项"
 
-#: build/models.py:1337
+#: build/models.py:1318
 msgid "Source stock item"
 msgstr "源库存项"
 
-#: build/models.py:1349 build/serializers.py:183
+#: build/models.py:1330 build/serializers.py:193
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1644
-#: company/forms.py:36 company/templates/company/supplier_part.html:279
-#: order/models.py:920 order/models.py:1445 order/serializers.py:1136
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
-#: part/forms.py:74 part/forms.py:89 part/models.py:2601
-#: part/templates/part/detail.html:937 part/templates/part/detail.html:1023
+#: build/templates/build/detail.html:34 common/models.py:1668
+#: company/templates/company/supplier_part.html:279 order/models.py:897
+#: order/models.py:1423 order/serializers.py:1155
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:40
+#: part/models.py:2601 part/templates/part/detail.html:937
+#: part/templates/part/detail.html:1023
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
-#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_build_order_base.html:113
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:81
 #: report/templates/report/inventree_test_report_base.html:139
-#: stock/serializers.py:291 stock/templates/stock/item_base.html:292
+#: stock/serializers.py:292 stock/templates/stock/item_base.html:292
 #: stock/templates/stock/item_base.html:300
 #: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
-#: templates/js/translated/bom.js:860 templates/js/translated/build.js:427
-#: templates/js/translated/build.js:579 templates/js/translated/build.js:770
-#: templates/js/translated/build.js:1180 templates/js/translated/build.js:1677
-#: templates/js/translated/build.js:2090
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:693
+#: templates/js/translated/bom.js:863 templates/js/translated/build.js:426
+#: templates/js/translated/build.js:578 templates/js/translated/build.js:768
+#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:2088
 #: templates/js/translated/model_renderers.js:120
-#: templates/js/translated/order.js:117 templates/js/translated/order.js:886
-#: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126
-#: templates/js/translated/order.js:2832 templates/js/translated/order.js:3154
-#: templates/js/translated/order.js:3241 templates/js/translated/order.js:3333
-#: templates/js/translated/order.js:3476 templates/js/translated/order.js:3984
-#: templates/js/translated/part.js:1036 templates/js/translated/part.js:2090
+#: templates/js/translated/order.js:120 templates/js/translated/order.js:937
+#: templates/js/translated/order.js:1966 templates/js/translated/order.js:2167
+#: templates/js/translated/order.js:2864 templates/js/translated/order.js:3184
+#: templates/js/translated/order.js:3271 templates/js/translated/order.js:3363
+#: templates/js/translated/order.js:3506 templates/js/translated/order.js:4014
+#: templates/js/translated/part.js:1034 templates/js/translated/part.js:2090
 #: templates/js/translated/part.js:2321 templates/js/translated/part.js:2355
 #: templates/js/translated/part.js:2433 templates/js/translated/stock.js:454
 #: templates/js/translated/stock.js:608 templates/js/translated/stock.js:778
-#: templates/js/translated/stock.js:2561 templates/js/translated/stock.js:2646
+#: templates/js/translated/stock.js:2558 templates/js/translated/stock.js:2643
 msgid "Quantity"
 msgstr "数量"
 
-#: build/models.py:1350
+#: build/models.py:1331
 msgid "Stock quantity to allocate to build"
 msgstr "分配到生产的数量"
 
-#: build/models.py:1358
+#: build/models.py:1339
 msgid "Install into"
 msgstr "安装到"
 
-#: build/models.py:1359
+#: build/models.py:1340
 msgid "Destination stock item"
 msgstr "目标库存项"
 
-#: build/serializers.py:128 build/serializers.py:648
-#: templates/js/translated/build.js:1168
+#: build/serializers.py:138 build/serializers.py:658
+#: templates/js/translated/build.js:1166
 msgid "Build Output"
 msgstr "生产产出"
 
-#: build/serializers.py:140
+#: build/serializers.py:150
 msgid "Build output does not match the parent build"
 msgstr "生产产出与对应生产不匹配"
 
-#: build/serializers.py:144
+#: build/serializers.py:154
 msgid "Output part does not match BuildOrder part"
 msgstr "产出部件与生产订单部件不匹配"
 
-#: build/serializers.py:148
+#: build/serializers.py:158
 msgid "This build output has already been completed"
 msgstr "此生产产出已经完成"
 
-#: build/serializers.py:159
+#: build/serializers.py:169
 msgid "This build output is not fully allocated"
 msgstr "生产产出未被完成分配"
 
-#: build/serializers.py:184
+#: build/serializers.py:194
 msgid "Enter quantity for build output"
 msgstr "输入生产产出数量"
 
-#: build/serializers.py:198 build/serializers.py:639 order/models.py:355
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:503
-#: part/serializers.py:926 stock/models.py:478 stock/models.py:1244
-#: stock/serializers.py:300
+#: build/serializers.py:208 build/serializers.py:649 order/models.py:318
+#: order/serializers.py:287 order/serializers.py:442 part/serializers.py:531
+#: part/serializers.py:963 stock/models.py:477 stock/models.py:1244
+#: stock/serializers.py:301
 msgid "Quantity must be greater than zero"
 msgstr "数量必须大于0"
 
-#: build/serializers.py:205
+#: build/serializers.py:215
 msgid "Integer quantity required for trackable parts"
 msgstr "对于可追踪的部件,需要整数型数值"
 
-#: build/serializers.py:208
+#: build/serializers.py:218
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr "需要整数型数值,因为BOM包含可追踪的部件"
 
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
-#: stock/serializers.py:309 templates/js/translated/order.js:1186
+#: build/serializers.py:232 order/serializers.py:455 order/serializers.py:1159
+#: stock/serializers.py:310 templates/js/translated/order.js:1235
 #: templates/js/translated/stock.js:267 templates/js/translated/stock.js:455
 msgid "Serial Numbers"
 msgstr "序列号"
 
-#: build/serializers.py:223
+#: build/serializers.py:233
 msgid "Enter serial numbers for build outputs"
 msgstr "输入生产产出的序列号"
 
-#: build/serializers.py:236
+#: build/serializers.py:246
 msgid "Auto Allocate Serial Numbers"
 msgstr "自动分配序列号"
 
-#: build/serializers.py:237
+#: build/serializers.py:247
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "自动为所需项分配对应的序列号"
 
-#: build/serializers.py:268 stock/api.py:561
+#: build/serializers.py:278 stock/api.py:561
 msgid "The following serial numbers already exist"
 msgstr "以下的序列号已存在"
 
-#: build/serializers.py:317 build/serializers.py:386
+#: build/serializers.py:327 build/serializers.py:396
 msgid "A list of build outputs must be provided"
 msgstr "必须提供生产产出列表"
 
-#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
-#: stock/serializers.py:320 stock/serializers.py:451 stock/serializers.py:532
-#: stock/serializers.py:902 stock/serializers.py:1135
+#: build/serializers.py:366 order/serializers.py:428 order/serializers.py:532
+#: stock/serializers.py:321 stock/serializers.py:452 stock/serializers.py:533
+#: stock/serializers.py:903 stock/serializers.py:1136
 #: stock/templates/stock/item_base.html:390
 #: templates/js/translated/barcode.js:436
-#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:755
-#: templates/js/translated/build.js:1689 templates/js/translated/order.js:1213
-#: templates/js/translated/order.js:3147 templates/js/translated/order.js:3252
-#: templates/js/translated/order.js:3260 templates/js/translated/order.js:3341
+#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:753
+#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1262
+#: templates/js/translated/order.js:3177 templates/js/translated/order.js:3282
+#: templates/js/translated/order.js:3290 templates/js/translated/order.js:3371
 #: templates/js/translated/part.js:181 templates/js/translated/stock.js:584
 #: templates/js/translated/stock.js:749 templates/js/translated/stock.js:956
-#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2453
+#: templates/js/translated/stock.js:1850 templates/js/translated/stock.js:2450
 msgid "Location"
 msgstr "地点"
 
-#: build/serializers.py:357
+#: build/serializers.py:367
 msgid "Location for completed build outputs"
 msgstr "已完成生产产出的仓储地点"
 
-#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:665
-#: order/serializers.py:458 stock/templates/stock/item_base.html:423
-#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2514
-#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1825
-#: templates/js/translated/stock.js:2530 templates/js/translated/stock.js:2662
+#: build/serializers.py:373 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:62 order/models.py:642
+#: order/serializers.py:465 stock/templates/stock/item_base.html:423
+#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2505
+#: templates/js/translated/order.js:1369 templates/js/translated/order.js:1701
+#: templates/js/translated/order.js:2513 templates/js/translated/stock.js:1825
+#: templates/js/translated/stock.js:2527 templates/js/translated/stock.js:2659
 msgid "Status"
 msgstr "状态"
 
-#: build/serializers.py:369
+#: build/serializers.py:379
 msgid "Accept Incomplete Allocation"
 msgstr "接受不完整的分配"
 
-#: build/serializers.py:370
+#: build/serializers.py:380
 msgid "Complete outputs if stock has not been fully allocated"
 msgstr "如果库存尚未完成分配,完成产出"
 
-#: build/serializers.py:439
+#: build/serializers.py:449
 msgid "Remove Allocated Stock"
 msgstr "移除已分配的库存"
 
-#: build/serializers.py:440
+#: build/serializers.py:450
 msgid "Subtract any stock which has already been allocated to this build"
 msgstr "减去已经分配至此生产的库存"
 
-#: build/serializers.py:446
+#: build/serializers.py:456
 msgid "Remove Incomplete Outputs"
 msgstr "移除未完成的产出"
 
-#: build/serializers.py:447
+#: build/serializers.py:457
 msgid "Delete any build outputs which have not been completed"
 msgstr "删除所有未完成的生产产出"
 
-#: build/serializers.py:470
+#: build/serializers.py:480
 msgid "Accept Overallocated"
 msgstr "接受过度分配"
 
-#: build/serializers.py:471
+#: build/serializers.py:481
 msgid "Accept stock items which have been overallocated to this build order"
 msgstr "接受已经被过度分配至此生产订单的库存项"
 
-#: build/serializers.py:481
+#: build/serializers.py:491
 msgid "Some stock items have been overallocated"
 msgstr "一些库存项已被过度分配"
 
-#: build/serializers.py:486
+#: build/serializers.py:496
 msgid "Accept Unallocated"
 msgstr "接受未分配的"
 
-#: build/serializers.py:487
+#: build/serializers.py:497
 msgid "Accept that stock items have not been fully allocated to this build order"
 msgstr "接受库存项未被完成分配至此生产订单"
 
-#: build/serializers.py:497 templates/js/translated/build.js:196
+#: build/serializers.py:507 templates/js/translated/build.js:195
 msgid "Required stock has not been fully allocated"
 msgstr "所需库存尚未完全分配"
 
-#: build/serializers.py:502
+#: build/serializers.py:512
 msgid "Accept Incomplete"
 msgstr "接受未完成"
 
-#: build/serializers.py:503
+#: build/serializers.py:513
 msgid "Accept that the required number of build outputs have not been completed"
 msgstr "接受所需的生产产出未完成"
 
-#: build/serializers.py:513 templates/js/translated/build.js:200
+#: build/serializers.py:523 templates/js/translated/build.js:199
 msgid "Required build quantity has not been completed"
 msgstr "所需生产数量尚未完成"
 
-#: build/serializers.py:522
+#: build/serializers.py:532
 msgid "Build order has incomplete outputs"
 msgstr "生产订单有未完成的产出"
 
-#: build/serializers.py:525 build/templates/build/build_base.html:95
+#: build/serializers.py:535 build/templates/build/build_base.html:95
 msgid "No build outputs have been created for this build order"
 msgstr "针对此生产订单,尚未创建生产产出"
 
-#: build/serializers.py:551 build/serializers.py:596 part/models.py:2719
+#: build/serializers.py:561 build/serializers.py:606 part/models.py:2719
 #: part/models.py:2853
 msgid "BOM Item"
 msgstr "BOM项"
 
-#: build/serializers.py:561
+#: build/serializers.py:571
 msgid "Build output"
 msgstr "生产产出"
 
-#: build/serializers.py:569
+#: build/serializers.py:579
 msgid "Build output must point to the same build"
 msgstr "生产产出必须指向相同的生产"
 
-#: build/serializers.py:610
+#: build/serializers.py:620
 msgid "bom_item.part must point to the same part as the build order"
 msgstr "bom_item.part 必须与生产订单指向相同的部件"
 
-#: build/serializers.py:625 stock/serializers.py:754
+#: build/serializers.py:635 stock/serializers.py:755
 msgid "Item must be in stock"
 msgstr "项目必须在库存中"
 
-#: build/serializers.py:683 order/serializers.py:1054
+#: build/serializers.py:693 order/serializers.py:1073
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "可用量 ({q}) 超出了限制"
 
-#: build/serializers.py:689
+#: build/serializers.py:699
 msgid "Build output must be specified for allocation of tracked parts"
 msgstr "对于被追踪的部件的分配,必须指定生产产出"
 
-#: build/serializers.py:696
+#: build/serializers.py:706
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr "对于未被追踪的部件,无法指定生产产出"
 
-#: build/serializers.py:701
+#: build/serializers.py:711
 msgid "This stock item has already been allocated to this build output"
 msgstr "此库存项已被分配至此生产产出"
 
-#: build/serializers.py:724 order/serializers.py:1300
+#: build/serializers.py:734 order/serializers.py:1319
 msgid "Allocation items must be provided"
 msgstr "必须提供分配的项"
 
-#: build/serializers.py:775
+#: build/serializers.py:785
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr "部件来源的仓储地点(留空则可来源于任何仓储地点)"
 
-#: build/serializers.py:783
+#: build/serializers.py:793
 msgid "Exclude Location"
 msgstr "排除地点"
 
-#: build/serializers.py:784
+#: build/serializers.py:794
 msgid "Exclude stock items from this selected location"
 msgstr "从该选定的仓储地点排除库存项"
 
-#: build/serializers.py:789
+#: build/serializers.py:799
 msgid "Interchangeable Stock"
 msgstr "可互换的库存"
 
-#: build/serializers.py:790
+#: build/serializers.py:800
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr "多处地点的库存项可以互换使用"
 
-#: build/serializers.py:795
+#: build/serializers.py:805
 msgid "Substitute Stock"
 msgstr "可替换的库存"
 
-#: build/serializers.py:796
+#: build/serializers.py:806
 msgid "Allow allocation of substitute parts"
 msgstr "允许分配可替换的部件"
 
@@ -1284,13 +1348,13 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:933
+#: build/templates/build/detail.html:131 order/models.py:910
 #: order/templates/order/order_base.html:162
 #: order/templates/order/sales_order_base.html:164
-#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2554 templates/js/translated/order.js:1677
-#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3539 templates/js/translated/part.js:1040
+#: report/templates/report/inventree_build_order_base.html:125
+#: templates/js/translated/build.js:2545 templates/js/translated/order.js:1718
+#: templates/js/translated/order.js:2028 templates/js/translated/order.js:2529
+#: templates/js/translated/order.js:3569 templates/js/translated/part.js:1038
 msgid "Target Date"
 msgstr "预计日期"
 
@@ -1303,35 +1367,35 @@ msgstr "此次生产的截止日期为 %(target)s"
 #: build/templates/build/build_base.html:201
 #: order/templates/order/order_base.html:98
 #: order/templates/order/sales_order_base.html:94
-#: templates/js/translated/table_filters.js:316
-#: templates/js/translated/table_filters.js:357
-#: templates/js/translated/table_filters.js:387
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:391
 msgid "Overdue"
 msgstr "逾期"
 
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142
 #: order/templates/order/sales_order_base.html:171
-#: templates/js/translated/table_filters.js:396
+#: templates/js/translated/table_filters.js:400
 msgid "Completed"
 msgstr "已完成"
 
 #: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1127
-#: order/models.py:1221 order/models.py:1352
+#: build/templates/build/detail.html:94 order/models.py:1105
+#: order/models.py:1199 order/models.py:1330
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:28
-#: report/templates/report/inventree_build_order_base.html:136
+#: report/templates/report/inventree_build_order_base.html:135
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:370
 #: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/order.js:2436
+#: templates/js/translated/order.js:2475
 msgid "Sales Order"
 msgstr "销售订单"
 
 #: build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:108
-#: report/templates/report/inventree_build_order_base.html:153
+#: report/templates/report/inventree_build_order_base.html:152
 msgid "Issued By"
 msgstr "发布者"
 
@@ -1360,8 +1424,8 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1045
-#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
+#: build/templates/build/detail.html:49 order/models.py:1023
+#: templates/js/translated/order.js:1370 templates/js/translated/order.js:2070
 msgid "Destination"
 msgstr ""
 
@@ -1375,19 +1439,19 @@ msgstr ""
 
 #: build/templates/build/detail.html:80
 #: stock/templates/stock/item_base.html:170
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1182
 #: templates/js/translated/model_renderers.js:124
 #: templates/js/translated/stock.js:1022 templates/js/translated/stock.js:1839
-#: templates/js/translated/stock.js:2669
-#: templates/js/translated/table_filters.js:155
-#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/stock.js:2666
+#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:250
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:126
 #: order/templates/order/order_base.html:149
 #: order/templates/order/sales_order_base.html:158
-#: templates/js/translated/build.js:2522
+#: templates/js/translated/build.js:2513
 msgid "Created"
 msgstr "已创建"
 
@@ -1407,7 +1471,7 @@ msgstr "子生产订单"
 msgid "Allocate Stock to Build"
 msgstr "为生产分配库存"
 
-#: build/templates/build/detail.html:176 templates/js/translated/build.js:1903
+#: build/templates/build/detail.html:176 templates/js/translated/build.js:1901
 msgid "Unallocate stock"
 msgstr "未分配库存"
 
@@ -1438,7 +1502,7 @@ msgstr "订单所需部件"
 #: build/templates/build/detail.html:187
 #: company/templates/company/detail.html:37
 #: company/templates/company/detail.html:85
-#: part/templates/part/category.html:177 templates/js/translated/order.js:926
+#: part/templates/part/category.html:177 templates/js/translated/order.js:977
 msgid "Order Parts"
 msgstr "订购商品"
 
@@ -1581,985 +1645,997 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:444
+#: common/models.py:451
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:446
+#: common/models.py:453
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:487
+#: common/models.py:494
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:504
+#: common/models.py:511
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:515
+#: common/models.py:522
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:560
+#: common/models.py:567
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:751
 msgid "No group"
 msgstr ""
 
-#: common/models.py:797
+#: common/models.py:804
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:798
+#: common/models.py:805
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:805
+#: common/models.py:812
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:807
+#: common/models.py:814
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:819
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:820
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:826
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:827
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:826 company/models.py:93 company/models.py:94
+#: common/models.py:833 company/models.py:93 company/models.py:94
 msgid "Company name"
 msgstr "公司名称"
 
-#: common/models.py:827
+#: common/models.py:834
 msgid "Internal company name"
 msgstr "内部公司名称"
 
-#: common/models.py:832
+#: common/models.py:839
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:840
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:847
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:848
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:854
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:855
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:854 templates/InvenTree/settings/sidebar.html:33
-msgid "Barcode Support"
-msgstr ""
-
-#: common/models.py:855
-msgid "Enable barcode scanner support"
-msgstr "启用条形码扫描支持"
-
 #: common/models.py:861
-msgid "Barcode Webcam Support"
+msgid "Download Size Limit"
 msgstr ""
 
 #: common/models.py:862
-msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
-
-#: common/models.py:868
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:869
-msgid "Regular expression pattern for matching Part IPN"
+msgid "Maximum allowable download size for remote image"
 msgstr ""
 
 #: common/models.py:873
-msgid "Allow Duplicate IPN"
+msgid "Require confirm"
 msgstr ""
 
 #: common/models.py:874
-msgid "Allow multiple parts to share the same IPN"
+msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:880
-msgid "Allow Editing IPN"
+#: common/models.py:880 templates/InvenTree/settings/sidebar.html:33
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:881
-msgid "Allow changing the IPN value while editing a part"
-msgstr ""
+msgid "Enable barcode scanner support"
+msgstr "启用条形码扫描支持"
 
 #: common/models.py:887
-msgid "Copy Part BOM Data"
+msgid "Barcode Webcam Support"
 msgstr ""
 
 #: common/models.py:888
-msgid "Copy BOM data by default when duplicating a part"
+msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
 #: common/models.py:894
-msgid "Copy Part Parameter Data"
+msgid "IPN Regex"
 msgstr ""
 
 #: common/models.py:895
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:899
+msgid "Allow Duplicate IPN"
+msgstr ""
+
+#: common/models.py:900
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:906
+msgid "Allow Editing IPN"
+msgstr ""
+
+#: common/models.py:907
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:913
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:914
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:920
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:921
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:927
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:928
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:908
+#: common/models.py:934
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:935
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:915 part/models.py:2412 report/models.py:157
+#: common/models.py:941 part/models.py:2412 report/models.py:157
 #: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:480
+#: templates/js/translated/table_filters.js:484
 msgid "Template"
 msgstr "模板"
 
-#: common/models.py:916
+#: common/models.py:942
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:922 part/models.py:887 templates/js/translated/bom.js:1384
-#: templates/js/translated/table_filters.js:172
-#: templates/js/translated/table_filters.js:443
+#: common/models.py:948 part/models.py:887 templates/js/translated/bom.js:1448
+#: templates/js/translated/table_filters.js:176
+#: templates/js/translated/table_filters.js:447
 msgid "Assembly"
 msgstr "组装"
 
-#: common/models.py:923
+#: common/models.py:949
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:929 part/models.py:893
-#: templates/js/translated/table_filters.js:451
+#: common/models.py:955 part/models.py:893
+#: templates/js/translated/table_filters.js:455
 msgid "Component"
 msgstr "组件"
 
-#: common/models.py:930
+#: common/models.py:956
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:936 part/models.py:904
+#: common/models.py:962 part/models.py:904
 msgid "Purchaseable"
 msgstr "可购买"
 
-#: common/models.py:937
+#: common/models.py:963
 msgid "Parts are purchaseable by default"
 msgstr "商品默认可购买"
 
-#: common/models.py:943 part/models.py:909
-#: templates/js/translated/table_filters.js:472
+#: common/models.py:969 part/models.py:909
+#: templates/js/translated/table_filters.js:476
 msgid "Salable"
 msgstr "可销售"
 
-#: common/models.py:944
+#: common/models.py:970
 msgid "Parts are salable by default"
 msgstr "商品默认可销售"
 
-#: common/models.py:950 part/models.py:899
+#: common/models.py:976 part/models.py:899
 #: templates/js/translated/table_filters.js:46
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:484
+#: templates/js/translated/table_filters.js:108
+#: templates/js/translated/table_filters.js:488
 msgid "Trackable"
 msgstr "可追踪"
 
-#: common/models.py:951
+#: common/models.py:977
 msgid "Parts are trackable by default"
 msgstr "商品默认可跟踪"
 
-#: common/models.py:957 part/models.py:919
+#: common/models.py:983 part/models.py:919
 #: part/templates/part/part_base.html:151
 #: templates/js/translated/table_filters.js:42
-#: templates/js/translated/table_filters.js:488
+#: templates/js/translated/table_filters.js:492
 msgid "Virtual"
 msgstr "虚拟"
 
-#: common/models.py:958
+#: common/models.py:984
 msgid "Parts are virtual by default"
 msgstr "商品默认是虚拟的"
 
-#: common/models.py:964
+#: common/models.py:990
 msgid "Show Import in Views"
 msgstr "视图中显示导入"
 
-#: common/models.py:965
+#: common/models.py:991
 msgid "Display the import wizard in some part views"
 msgstr "在一些商品视图中显示导入向导"
 
-#: common/models.py:971
+#: common/models.py:997
 msgid "Show Price in Forms"
 msgstr "在表格中显示价格"
 
-#: common/models.py:972
+#: common/models.py:998
 msgid "Display part price in some forms"
 msgstr "以某些表格显示商品价格"
 
-#: common/models.py:983
+#: common/models.py:1009
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:1010
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:1021
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1022
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:1002
+#: common/models.py:1028
 msgid "Show related parts"
 msgstr "显示相关商品"
 
-#: common/models.py:1003
+#: common/models.py:1029
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1009
+#: common/models.py:1035
 msgid "Create initial stock"
 msgstr "创建初始库存"
 
-#: common/models.py:1010
+#: common/models.py:1036
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:1016
+#: common/models.py:1042
 msgid "Internal Prices"
 msgstr "内部价格"
 
-#: common/models.py:1017
+#: common/models.py:1043
 msgid "Enable internal prices for parts"
 msgstr "启用内部商品价格"
 
-#: common/models.py:1023
+#: common/models.py:1049
 msgid "Internal Price as BOM-Price"
 msgstr "内部价格为BOM价格"
 
-#: common/models.py:1024
+#: common/models.py:1050
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr "在 BOM价格计算中使用内部价格(如设置)"
 
-#: common/models.py:1030
+#: common/models.py:1056
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1057
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1038
+#: common/models.py:1064
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1039
+#: common/models.py:1065
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1045
+#: common/models.py:1071
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1046
+#: common/models.py:1072
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1055
+#: common/models.py:1081
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1056
+#: common/models.py:1082
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1062 templates/stats.html:25
+#: common/models.py:1088 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "调试模式"
 
-#: common/models.py:1063
+#: common/models.py:1089
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "在调试模式生成报告(HTML输出)"
 
-#: common/models.py:1069
+#: common/models.py:1095
 msgid "Page Size"
 msgstr "页面大小"
 
-#: common/models.py:1070
+#: common/models.py:1096
 msgid "Default page size for PDF reports"
 msgstr "PDF 报表默认页面大小"
 
-#: common/models.py:1080
+#: common/models.py:1106
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1081
+#: common/models.py:1107
 msgid "Enable generation of test reports"
 msgstr "启用生成测试报表"
 
-#: common/models.py:1087
+#: common/models.py:1113
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1088
+#: common/models.py:1114
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1094
+#: common/models.py:1120
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1095
+#: common/models.py:1121
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1100
+#: common/models.py:1126
 msgid "Stock Expiry"
 msgstr "库存到期"
 
-#: common/models.py:1101
+#: common/models.py:1127
 msgid "Enable stock expiry functionality"
 msgstr "启用库存到期功能"
 
-#: common/models.py:1107
+#: common/models.py:1133
 msgid "Sell Expired Stock"
 msgstr "销售过期库存"
 
-#: common/models.py:1108
+#: common/models.py:1134
 msgid "Allow sale of expired stock"
 msgstr "允许销售过期库存"
 
-#: common/models.py:1114
+#: common/models.py:1140
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1141
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1117
+#: common/models.py:1143
 msgid "days"
 msgstr "天"
 
-#: common/models.py:1122
+#: common/models.py:1148
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1123
+#: common/models.py:1149
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1129
+#: common/models.py:1155
 msgid "Stock Ownership Control"
 msgstr "库存所有权控制"
 
-#: common/models.py:1130
+#: common/models.py:1156
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1136
-msgid "Build Order Reference Prefix"
-msgstr "生产订单参考前缀"
-
-#: common/models.py:1137
-msgid "Prefix value for build order reference"
+#: common/models.py:1162
+msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1142
-msgid "Build Order Reference Regex"
+#: common/models.py:1163
+msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1143
-msgid "Regular expression pattern for matching build order reference"
+#: common/models.py:1169
+msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1147
-msgid "Sales Order Reference Prefix"
+#: common/models.py:1170
+msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1148
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:1153
+#: common/models.py:1176
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1154
+#: common/models.py:1177
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1160
-msgid "Purchase Order Reference Prefix"
+#: common/models.py:1183
+msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1161
-msgid "Prefix value for purchase order reference"
+#: common/models.py:1184
+msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1167
+#: common/models.py:1191
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1168
+#: common/models.py:1192
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1174
+#: common/models.py:1198
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1199
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1205
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1206
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1212
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1213
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1219
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1220
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1226
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1227
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1233
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1234
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1240
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1241
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1247
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1248
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1254
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1255
 msgid "Check that all plugins are installed on startup - enable in container enviroments"
 msgstr ""
 
-#: common/models.py:1239
+#: common/models.py:1263
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1240
+#: common/models.py:1264
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1247
+#: common/models.py:1271
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1248
+#: common/models.py:1272
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1255
+#: common/models.py:1279
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1256
+#: common/models.py:1280
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1287
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1288
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1271
+#: common/models.py:1295
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1272
+#: common/models.py:1296
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1289 common/models.py:1605
+#: common/models.py:1313 common/models.py:1629
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1335
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1336
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1342
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1319
+#: common/models.py:1343
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1349
 msgid "Show latest parts"
 msgstr "显示最近商品"
 
-#: common/models.py:1326
+#: common/models.py:1350
 msgid "Show latest parts on the homepage"
 msgstr "在主页上显示最近商品"
 
-#: common/models.py:1332
+#: common/models.py:1356
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1333
+#: common/models.py:1357
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1363
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1340
+#: common/models.py:1364
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1370
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1347
+#: common/models.py:1371
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1377
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1354
+#: common/models.py:1378
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1360
+#: common/models.py:1384
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1361
+#: common/models.py:1385
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1391
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1368
+#: common/models.py:1392
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1398
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1375
+#: common/models.py:1399
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1381
+#: common/models.py:1405
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1382
+#: common/models.py:1406
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1388
+#: common/models.py:1412
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1389
+#: common/models.py:1413
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1395
+#: common/models.py:1419
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1396
+#: common/models.py:1420
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1402
+#: common/models.py:1426
 msgid "Show overdue builds"
 msgstr "显示逾期生产"
 
-#: common/models.py:1403
+#: common/models.py:1427
 msgid "Show overdue builds on the homepage"
 msgstr "在主页上显示逾期的生产"
 
-#: common/models.py:1409
+#: common/models.py:1433
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1410
+#: common/models.py:1434
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1416
+#: common/models.py:1440
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1441
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1423
+#: common/models.py:1447
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1424
+#: common/models.py:1448
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1430
+#: common/models.py:1454
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1431
+#: common/models.py:1455
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1437
+#: common/models.py:1461
 msgid "Inline label display"
 msgstr "内嵌标签显示"
 
-#: common/models.py:1438
+#: common/models.py:1462
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载"
 
-#: common/models.py:1444
+#: common/models.py:1468
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1469
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载"
 
-#: common/models.py:1451
+#: common/models.py:1475
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1476
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1482
 msgid "Seach Supplier Parts"
 msgstr ""
 
-#: common/models.py:1459
+#: common/models.py:1483
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:1465
+#: common/models.py:1489
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:1466
+#: common/models.py:1490
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:1472
+#: common/models.py:1496
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1473
+#: common/models.py:1497
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:1479
+#: common/models.py:1503
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:1480
+#: common/models.py:1504
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:1486
+#: common/models.py:1510
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:1487
+#: common/models.py:1511
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1517
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1518
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1524
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:1501
+#: common/models.py:1525
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:1507
+#: common/models.py:1531
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:1508
+#: common/models.py:1532
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1538
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:1515
+#: common/models.py:1539
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1545
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1546
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:1528
+#: common/models.py:1552
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:1529
+#: common/models.py:1553
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:1535
+#: common/models.py:1559
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:1536
+#: common/models.py:1560
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:1542
+#: common/models.py:1566
 msgid "Search Preview Results"
 msgstr "搜索预览结果"
 
-#: common/models.py:1543
+#: common/models.py:1567
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:1549
+#: common/models.py:1573
 msgid "Show Quantity in Forms"
 msgstr "在表格中显示数量"
 
-#: common/models.py:1550
+#: common/models.py:1574
 msgid "Display available part quantity in some forms"
 msgstr "在某些表格中显示可用的商品数量"
 
-#: common/models.py:1556
+#: common/models.py:1580
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1557
+#: common/models.py:1581
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1587
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1564
+#: common/models.py:1588
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1570
+#: common/models.py:1594
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1595
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1585 part/templates/part/detail.html:41
+#: common/models.py:1609 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:1586
+#: common/models.py:1610
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:1645 company/forms.py:37
+#: common/models.py:1669
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1652 company/serializers.py:319
-#: company/templates/company/supplier_part.html:284 order/models.py:960
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:2095
+#: common/models.py:1676 company/serializers.py:366
+#: company/templates/company/supplier_part.html:284 order/models.py:938
+#: templates/js/translated/part.js:1065 templates/js/translated/part.js:2095
 msgid "Price"
 msgstr "价格"
 
-#: common/models.py:1653
+#: common/models.py:1677
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1813 common/models.py:1991
+#: common/models.py:1837 common/models.py:2015
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1838
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1823
+#: common/models.py:1847
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1828 part/models.py:914 plugin/models.py:99
+#: common/models.py:1852 part/models.py:914 plugin/models.py:99
 #: templates/js/translated/table_filters.js:34
-#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:312
-#: templates/js/translated/table_filters.js:438
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:442
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1829
+#: common/models.py:1853
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1844
+#: common/models.py:1867
+msgid "Token"
+msgstr "令牌"
+
+#: common/models.py:1868
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1875
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1876
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1958
+#: common/models.py:1982
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1959
+#: common/models.py:1983
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1967
+#: common/models.py:1991
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1968
+#: common/models.py:1992
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1975
+#: common/models.py:1999
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1976
+#: common/models.py:2000
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1982
+#: common/models.py:2006
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1983
+#: common/models.py:2007
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1992
+#: common/models.py:2016
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1997
+#: common/models.py:2021
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1998
+#: common/models.py:2022
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2581,14 +2657,14 @@ msgid "Items have been received against a purchase order"
 msgstr ""
 
 #: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:116
+#: order/views.py:102 part/views.py:112
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
 msgstr "上传文件"
 
 #: common/views.py:88 order/views.py:103
 #: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
 msgstr "匹配字段"
 
@@ -2611,15 +2687,6 @@ msgstr "已导入商品"
 msgid "Previous Step"
 msgstr ""
 
-#: company/forms.py:16 part/forms.py:18
-#: templates/InvenTree/settings/mixins/urls.html:14
-msgid "URL"
-msgstr ""
-
-#: company/forms.py:17 part/forms.py:19
-msgid "Image URL"
-msgstr "图片URL"
-
 #: company/models.py:98
 msgid "Company description"
 msgstr "公司简介"
@@ -2630,7 +2697,7 @@ msgstr "公司简介"
 
 #: company/models.py:105 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:413
 msgid "Website"
 msgstr "网站"
 
@@ -2707,9 +2774,9 @@ msgstr "是制造商"
 msgid "Does this company manufacture parts?"
 msgstr "该公司制造商品吗?"
 
-#: company/models.py:148 company/serializers.py:325
-#: company/templates/company/company_base.html:106 part/serializers.py:138
-#: part/serializers.py:169 stock/serializers.py:178
+#: company/models.py:148 company/serializers.py:372
+#: company/templates/company/company_base.html:106 part/serializers.py:140
+#: part/serializers.py:171 stock/serializers.py:179
 msgid "Currency"
 msgstr "货币"
 
@@ -2717,9 +2784,9 @@ msgstr "货币"
 msgid "Default currency used for this company"
 msgstr "该公司使用的默认货币"
 
-#: company/models.py:248 company/models.py:481 stock/models.py:592
-#: stock/serializers.py:85 stock/templates/stock/item_base.html:148
-#: templates/js/translated/bom.js:542
+#: company/models.py:248 company/models.py:481 stock/models.py:591
+#: stock/serializers.py:86 stock/templates/stock/item_base.html:148
+#: templates/js/translated/bom.js:543
 msgid "Base Part"
 msgstr ""
 
@@ -2731,11 +2798,11 @@ msgstr "选择商品"
 #: company/templates/company/manufacturer_part.html:90
 #: company/templates/company/supplier_part.html:124
 #: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:385
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:904 templates/js/translated/part.js:236
-#: templates/js/translated/table_filters.js:415
+#: templates/js/translated/company.js:397
+#: templates/js/translated/company.js:498
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:919 templates/js/translated/part.js:236
+#: templates/js/translated/table_filters.js:419
 msgid "Manufacturer"
 msgstr "制造商"
 
@@ -2745,11 +2812,11 @@ msgstr "选择制造商"
 
 #: company/models.py:270 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:132
-#: templates/js/translated/company.js:258
-#: templates/js/translated/company.js:485
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:922 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:247 templates/js/translated/part.js:1025
+#: templates/js/translated/company.js:269
+#: templates/js/translated/company.js:497
+#: templates/js/translated/company.js:649
+#: templates/js/translated/company.js:937 templates/js/translated/order.js:1948
+#: templates/js/translated/part.js:247 templates/js/translated/part.js:1023
 msgid "MPN"
 msgstr ""
 
@@ -2778,8 +2845,8 @@ msgstr "参数名称"
 
 #: company/models.py:365
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2089 templates/js/translated/company.js:533
-#: templates/js/translated/company.js:750 templates/js/translated/part.js:845
+#: stock/models.py:2088 templates/js/translated/company.js:546
+#: templates/js/translated/company.js:764 templates/js/translated/part.js:845
 #: templates/js/translated/stock.js:1356
 msgid "Value"
 msgstr "数值"
@@ -2791,7 +2858,7 @@ msgstr "参数值"
 #: company/models.py:372 part/models.py:881 part/models.py:2379
 #: part/templates/part/part_base.html:280
 #: templates/InvenTree/settings/settings.html:352
-#: templates/js/translated/company.js:756 templates/js/translated/part.js:851
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:851
 msgid "Units"
 msgstr "单位"
 
@@ -2804,15 +2871,15 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:491 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: company/templates/company/supplier_part.html:108 order/models.py:258
 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
 #: stock/templates/stock/item_base.html:229
 #: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:257
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:878 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:217 templates/js/translated/part.js:993
-#: templates/js/translated/table_filters.js:419
+#: templates/js/translated/company.js:268
+#: templates/js/translated/company.js:401
+#: templates/js/translated/company.js:893 templates/js/translated/order.js:1684
+#: templates/js/translated/part.js:217 templates/js/translated/part.js:991
+#: templates/js/translated/table_filters.js:423
 msgid "Supplier"
 msgstr "供应商"
 
@@ -2821,9 +2888,9 @@ msgid "Select supplier"
 msgstr "选择供应商"
 
 #: company/models.py:497 company/templates/company/supplier_part.html:118
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:256
-#: templates/js/translated/order.js:1894 templates/js/translated/part.js:228
-#: templates/js/translated/part.js:1011
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:267
+#: templates/js/translated/order.js:1935 templates/js/translated/part.js:228
+#: templates/js/translated/part.js:1009
 msgid "SKU"
 msgstr ""
 
@@ -2846,7 +2913,7 @@ msgstr "供应商商品描述"
 #: company/models.py:522 company/templates/company/supplier_part.html:146
 #: part/models.py:2613 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:92
-#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:399
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:400
 msgid "Note"
 msgstr "备注"
 
@@ -2860,7 +2927,7 @@ msgstr "最低收费(例如库存费)"
 
 #: company/models.py:528 company/templates/company/supplier_part.html:139
 #: stock/models.py:617 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:954 templates/js/translated/stock.js:1975
+#: templates/js/translated/company.js:969 templates/js/translated/stock.js:1972
 msgid "Packaging"
 msgstr "打包"
 
@@ -2879,10 +2946,10 @@ msgstr ""
 #: company/models.py:538 company/templates/company/supplier_part.html:94
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1791
-#: templates/js/translated/build.js:2654 templates/js/translated/company.js:959
+#: templates/js/translated/bom.js:913 templates/js/translated/build.js:1789
+#: templates/js/translated/build.js:2645 templates/js/translated/company.js:979
 #: templates/js/translated/part.js:596 templates/js/translated/part.js:599
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:186
 msgid "Available"
 msgstr "空闲"
 
@@ -2902,22 +2969,22 @@ msgstr ""
 msgid "last updated"
 msgstr ""
 
-#: company/serializers.py:68
+#: company/serializers.py:72
 msgid "Default currency used for this supplier"
 msgstr "该公司使用的默认货币"
 
-#: company/serializers.py:69
+#: company/serializers.py:73
 msgid "Currency Code"
 msgstr "货币代码"
 
 #: company/templates/company/company_base.html:8
 #: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:374
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:386
 msgid "Company"
 msgstr "公司"
 
 #: company/templates/company/company_base.html:22
-#: templates/js/translated/order.js:537
+#: templates/js/translated/order.js:540
 msgid "Create Purchase Order"
 msgstr "创建采购订单"
 
@@ -2930,7 +2997,7 @@ msgid "Edit company information"
 msgstr "编辑公司信息"
 
 #: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:329
 msgid "Edit Company"
 msgstr "编辑公司信息"
 
@@ -2953,14 +3020,14 @@ msgstr "上传新图片"
 msgid "Download image from URL"
 msgstr "从 URL 下载图片"
 
-#: company/templates/company/company_base.html:86 order/models.py:660
+#: company/templates/company/company_base.html:86 order/models.py:637
 #: order/templates/order/sales_order_base.html:116 stock/models.py:636
-#: stock/models.py:637 stock/serializers.py:796
+#: stock/models.py:637 stock/serializers.py:797
 #: stock/templates/stock/item_base.html:401
 #: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:381 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2494
-#: templates/js/translated/table_filters.js:423
+#: templates/js/translated/company.js:393 templates/js/translated/order.js:2490
+#: templates/js/translated/stock.js:2491
+#: templates/js/translated/table_filters.js:427
 msgid "Customer"
 msgstr "客户"
 
@@ -2977,6 +3044,11 @@ msgstr "电话"
 msgid "Upload Image"
 msgstr "上传图片"
 
+#: company/templates/company/company_base.html:223
+#: part/templates/part/part_base.html:520
+msgid "Download Image"
+msgstr "下载图片"
+
 #: company/templates/company/detail.html:14
 #: company/templates/company/manufacturer_part_sidebar.html:7
 #: templates/InvenTree/search.html:118 templates/js/translated/search.js:170
@@ -3074,7 +3146,7 @@ msgid "New Sales Order"
 msgstr "新建销售订单"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1662
+#: templates/js/translated/build.js:1660
 msgid "Assigned Stock"
 msgstr ""
 
@@ -3082,7 +3154,7 @@ msgstr ""
 msgid "Supplier List"
 msgstr "供应商列表"
 
-#: company/templates/company/manufacturer_part.html:15 company/views.py:45
+#: company/templates/company/manufacturer_part.html:15 company/views.py:38
 #: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
 #: templates/navbar.html:49
 msgid "Manufacturers"
@@ -3095,12 +3167,12 @@ msgid "Order part"
 msgstr "订购商品"
 
 #: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:667
+#: templates/js/translated/company.js:681
 msgid "Edit manufacturer part"
 msgstr "编辑制造商商品"
 
 #: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:668
+#: templates/js/translated/company.js:682
 msgid "Delete manufacturer part"
 msgstr "删除生产商商品"
 
@@ -3114,7 +3186,7 @@ msgid "No manufacturer information available"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:39
+#: company/templates/company/supplier_part.html:15 company/views.py:32
 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
 #: templates/InvenTree/search.html:189 templates/navbar.html:48
 msgid "Suppliers"
@@ -3128,7 +3200,7 @@ msgstr "删除供应商商品"
 #: company/templates/company/manufacturer_part.html:136
 #: company/templates/company/manufacturer_part.html:183
 #: part/templates/part/detail.html:366 part/templates/part/detail.html:396
-#: templates/js/translated/forms.js:442 templates/js/translated/helpers.js:33
+#: templates/js/translated/forms.js:453 templates/js/translated/helpers.js:33
 #: users/models.py:220
 msgid "Delete"
 msgstr "删除"
@@ -3173,10 +3245,10 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:601
+#: company/templates/company/supplier_part.html:24 stock/models.py:600
 #: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:894 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/company.js:909 templates/js/translated/order.js:935
+#: templates/js/translated/stock.js:1929
 msgid "Supplier Part"
 msgstr "供应商商品"
 
@@ -3198,7 +3270,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:48
 #: company/templates/company/supplier_part.html:49
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:212
 msgid "Edit Supplier Part"
 msgstr "编辑供应商商品"
 
@@ -3282,7 +3354,7 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:151
 #: templates/InvenTree/settings/sidebar.html:45
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:747
+#: templates/js/translated/bom.js:555 templates/js/translated/part.js:747
 #: templates/js/translated/part.js:1295 templates/js/translated/part.js:1456
 #: templates/js/translated/stock.js:955 templates/js/translated/stock.js:1750
 #: templates/navbar.html:31
@@ -3311,52 +3383,35 @@ msgstr "定价"
 #: stock/templates/stock/location.html:173
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2370 users/models.py:40
+#: templates/js/translated/stock.js:2367 users/models.py:40
 msgid "Stock Items"
 msgstr "库存项"
 
-#: company/views.py:40
+#: company/views.py:33
 msgid "New Supplier"
 msgstr "新增供应商"
 
-#: company/views.py:46
+#: company/views.py:39
 msgid "New Manufacturer"
 msgstr "新建制造商"
 
-#: company/views.py:51 templates/InvenTree/search.html:209
+#: company/views.py:44 templates/InvenTree/search.html:209
 #: templates/navbar.html:60
 msgid "Customers"
 msgstr "客户信息"
 
-#: company/views.py:52
+#: company/views.py:45
 msgid "New Customer"
 msgstr "新建客户"
 
-#: company/views.py:59 templates/js/translated/search.js:252
+#: company/views.py:52 templates/js/translated/search.js:252
 msgid "Companies"
 msgstr "公司"
 
-#: company/views.py:60
+#: company/views.py:53
 msgid "New Company"
 msgstr "新建公司信息"
 
-#: company/views.py:112 part/views.py:501
-msgid "Download Image"
-msgstr "下载图片"
-
-#: company/views.py:139 part/views.py:531
-msgid "Image size exceeds maximum allowable size for download"
-msgstr "图像大小超过下载允许的最大尺寸"
-
-#: company/views.py:146 part/views.py:538
-#, python-brace-format
-msgid "Invalid response: {code}"
-msgstr "无效响应: {code}"
-
-#: company/views.py:155 part/views.py:547
-msgid "Supplied URL is not a valid image file"
-msgstr "提供的 URL 不是一个有效的图片文件"
-
 #: label/models.py:102
 msgid "Label name"
 msgstr "标签名称"
@@ -3410,7 +3465,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
 msgstr "查询筛选器 (逗号分隔的键值对列表)"
 
 #: label/models.py:234 label/models.py:274 label/models.py:302
-#: report/models.py:279 report/models.py:410 report/models.py:449
+#: report/models.py:279 report/models.py:410 report/models.py:448
 msgid "Filters"
 msgstr "筛选器"
 
@@ -3422,438 +3477,438 @@ msgstr "查询筛选器 (逗号分隔的键值对列表"
 msgid "Part query filters (comma-separated value of key=value pairs)"
 msgstr "商品查询筛选器 (逗号分隔的键值对列表)"
 
-#: order/models.py:134
+#: order/models.py:82
 msgid "Order description"
 msgstr ""
 
-#: order/models.py:136 order/models.py:1268
+#: order/models.py:84 order/models.py:1246
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:144
+#: order/models.py:92
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:151
+#: order/models.py:99
 msgid "User or group responsible for this order"
 msgstr "负责此订单的用户或群组"
 
-#: order/models.py:156
+#: order/models.py:104
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:281 order/models.py:650
+#: order/models.py:241 order/models.py:624
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:286 order/models.py:665
+#: order/models.py:249 order/models.py:642
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:296
+#: order/models.py:259
 msgid "Company from which the items are being ordered"
 msgstr "订购该商品的公司"
 
-#: order/models.py:299 order/templates/order/order_base.html:124
-#: templates/js/translated/order.js:1652
+#: order/models.py:262 order/templates/order/order_base.html:124
+#: templates/js/translated/order.js:1693
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:299
+#: order/models.py:262
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:306
+#: order/models.py:269
 msgid "received by"
 msgstr ""
 
-#: order/models.py:311
+#: order/models.py:274
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:312
+#: order/models.py:275
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:317
+#: order/models.py:280
 msgid "Target Delivery Date"
 msgstr ""
 
-#: order/models.py:318
+#: order/models.py:281
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:324
+#: order/models.py:287
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:360
+#: order/models.py:323
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:504
+#: order/models.py:467
 msgid "Quantity must be a positive number"
 msgstr "数量必须大于0"
 
-#: order/models.py:661
+#: order/models.py:638
 msgid "Company to which the items are being sold"
 msgstr "向其出售该商品的公司"
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:667
+#: order/models.py:644
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:672
+#: order/models.py:649
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:675 order/models.py:1226
-#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2667
+#: order/models.py:652 order/models.py:1204
+#: templates/js/translated/order.js:2537 templates/js/translated/order.js:2699
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:682
+#: order/models.py:659
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:737
+#: order/models.py:714
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:718
 msgid "Only a pending order can be marked as complete"
 msgstr ""
 
-#: order/models.py:744
+#: order/models.py:721
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:747
+#: order/models.py:724
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:921
+#: order/models.py:898
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:927
+#: order/models.py:904
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:929
+#: order/models.py:906
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:934
+#: order/models.py:911
 msgid "Target shipping date for this line item"
 msgstr ""
 
-#: order/models.py:952
+#: order/models.py:929
 msgid "Context"
 msgstr ""
 
-#: order/models.py:953
+#: order/models.py:930
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:961
+#: order/models.py:939
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:991
+#: order/models.py:969
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:999
+#: order/models.py:977
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1005 order/models.py:1085 order/models.py:1126
-#: order/models.py:1220 order/models.py:1352
-#: templates/js/translated/order.js:3123
+#: order/models.py:983 order/models.py:1063 order/models.py:1104
+#: order/models.py:1198 order/models.py:1330
+#: templates/js/translated/order.js:3155
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1006 order/models.py:1085
+#: order/models.py:984 order/models.py:1063
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:76
 #: stock/templates/stock/item_base.html:184
 #: templates/email/overdue_purchase_order.html:15
-#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
+#: templates/js/translated/order.js:936 templates/js/translated/order.js:1668
 #: templates/js/translated/part.js:968 templates/js/translated/stock.js:1909
-#: templates/js/translated/stock.js:2475
+#: templates/js/translated/stock.js:2472
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:1024
+#: order/models.py:1002
 msgid "Supplier part"
 msgstr "供应商商品"
 
-#: order/models.py:1031 order/templates/order/order_base.html:169
-#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:1062 templates/js/translated/part.js:1089
-#: templates/js/translated/table_filters.js:334
+#: order/models.py:1009 order/templates/order/order_base.html:169
+#: templates/js/translated/order.js:1367 templates/js/translated/order.js:2050
+#: templates/js/translated/part.js:1060 templates/js/translated/part.js:1087
+#: templates/js/translated/table_filters.js:338
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1032
+#: order/models.py:1010
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1039 part/templates/part/prices.html:181 stock/models.py:727
-#: stock/serializers.py:169 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1963
+#: order/models.py:1017 part/templates/part/prices.html:181 stock/models.py:727
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:191
+#: templates/js/translated/stock.js:1960
 msgid "Purchase Price"
 msgstr "采购价格"
 
-#: order/models.py:1040
+#: order/models.py:1018
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1048
+#: order/models.py:1026
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1114
+#: order/models.py:1092
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1119
+#: order/models.py:1097
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1145 part/templates/part/part_pricing.html:115
+#: order/models.py:1123 part/templates/part/part_pricing.html:115
 #: part/templates/part/prices.html:121 part/templates/part/prices.html:290
 msgid "Sale Price"
 msgstr "销售价格"
 
-#: order/models.py:1146
+#: order/models.py:1124
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1151
+#: order/models.py:1129
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1227
+#: order/models.py:1205
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1234
+#: order/models.py:1212
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1235
+#: order/models.py:1213
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1243
-msgid "Shipment number"
-msgstr ""
-
-#: order/models.py:1247
-msgid "Shipment notes"
-msgstr ""
-
-#: order/models.py:1253
-msgid "Tracking Number"
-msgstr ""
-
-#: order/models.py:1254
-msgid "Shipment tracking information"
-msgstr ""
-
-#: order/models.py:1261
-msgid "Invoice Number"
-msgstr ""
-
-#: order/models.py:1262
-msgid "Reference number for associated invoice"
-msgstr ""
-
-#: order/models.py:1280
-msgid "Shipment has already been sent"
-msgstr ""
-
-#: order/models.py:1283
-msgid "Shipment has no allocated stock items"
-msgstr ""
-
-#: order/models.py:1386 order/models.py:1388
-msgid "Stock item has not been assigned"
-msgstr ""
-
-#: order/models.py:1392
-msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
-
-#: order/models.py:1394
-msgid "Cannot allocate stock to a line without a part"
-msgstr ""
-
-#: order/models.py:1397
-msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
-
-#: order/models.py:1401
-msgid "StockItem is over-allocated"
-msgstr ""
-
-#: order/models.py:1407 order/serializers.py:1047
-msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
-
-#: order/models.py:1410
-msgid "Sales order does not match shipment"
-msgstr ""
-
-#: order/models.py:1411
-msgid "Shipment does not match sales order"
-msgstr ""
-
-#: order/models.py:1419
-msgid "Line"
-msgstr ""
-
-#: order/models.py:1427 order/serializers.py:1151 order/serializers.py:1275
-#: templates/js/translated/model_renderers.js:313
+#: order/models.py:1220 order/models.py:1405 order/serializers.py:1170
+#: order/serializers.py:1294 templates/js/translated/model_renderers.js:314
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1428
+#: order/models.py:1221
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1225
+msgid "Shipment notes"
+msgstr ""
+
+#: order/models.py:1231
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1232
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1239
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1240
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1258
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1261
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1364 order/models.py:1366
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:1370
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:1372
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:1375
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:1379
+msgid "StockItem is over-allocated"
+msgstr ""
+
+#: order/models.py:1385 order/serializers.py:1066
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:1388
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:1389
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:1397
+msgid "Line"
+msgstr ""
+
+#: order/models.py:1406
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1441 templates/js/translated/notification.js:55
+#: order/models.py:1419 templates/js/translated/notification.js:55
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1442
+#: order/models.py:1420
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1445
+#: order/models.py:1423
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/serializers.py:68
+#: order/serializers.py:67
 msgid "Price currency"
 msgstr ""
 
-#: order/serializers.py:192
+#: order/serializers.py:199
 msgid "Order cannot be cancelled"
 msgstr "无法取消订单"
 
-#: order/serializers.py:287
+#: order/serializers.py:294
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:311
+#: order/serializers.py:318
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:330
+#: order/serializers.py:337
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:335
+#: order/serializers.py:342
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:341
+#: order/serializers.py:348
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:342
+#: order/serializers.py:349
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:406 order/serializers.py:1119
+#: order/serializers.py:413 order/serializers.py:1138
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:412
+#: order/serializers.py:419
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:422 order/serializers.py:526
+#: order/serializers.py:429 order/serializers.py:533
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:441 templates/js/translated/order.js:1176
+#: order/serializers.py:448 templates/js/translated/order.js:1225
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:449 templates/js/translated/order.js:1187
+#: order/serializers.py:456 templates/js/translated/order.js:1236
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:462
+#: order/serializers.py:469
 msgid "Barcode Hash"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:470
 msgid "Unique identifier field"
 msgstr ""
 
-#: order/serializers.py:477
+#: order/serializers.py:484
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:507
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:542
+#: order/serializers.py:549
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:559
+#: order/serializers.py:566
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:570
+#: order/serializers.py:577
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:868
+#: order/serializers.py:883
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:949
+#: order/serializers.py:964
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1008 order/serializers.py:1128
+#: order/serializers.py:1027 order/serializers.py:1147
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1030
+#: order/serializers.py:1049
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1141
+#: order/serializers.py:1160
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1163 order/serializers.py:1283
+#: order/serializers.py:1182 order/serializers.py:1302
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1166 order/serializers.py:1286
+#: order/serializers.py:1185 order/serializers.py:1305
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1216
+#: order/serializers.py:1235
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1226
+#: order/serializers.py:1245
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
@@ -3952,7 +4007,7 @@ msgid "Incomplete"
 msgstr ""
 
 #: order/templates/order/order_base.html:155
-#: report/templates/report/inventree_build_order_base.html:122
+#: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
 msgstr ""
 
@@ -3996,10 +4051,10 @@ msgstr "选择供应商商品"
 #: part/templates/part/import_wizard/ajax_match_fields.html:64
 #: part/templates/part/import_wizard/ajax_match_references.html:42
 #: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:77 templates/js/translated/build.js:432
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:1976
-#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2742 templates/js/translated/stock.js:621
+#: templates/js/translated/bom.js:77 templates/js/translated/build.js:431
+#: templates/js/translated/build.js:583 templates/js/translated/build.js:1974
+#: templates/js/translated/order.js:884 templates/js/translated/order.js:1314
+#: templates/js/translated/order.js:2774 templates/js/translated/stock.js:621
 #: templates/js/translated/stock.js:789
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
@@ -4033,9 +4088,9 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:26
-#: order/templates/order/purchase_order_detail.html:184
 #: order/templates/order/sales_order_detail.html:22
 #: order/templates/order/sales_order_detail.html:255
+#: templates/js/translated/order.js:557
 msgid "Add Line Item"
 msgstr ""
 
@@ -4063,7 +4118,7 @@ msgstr ""
 msgid "Order Notes"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:235
+#: order/templates/order/purchase_order_detail.html:228
 msgid "Add Order Line"
 msgstr ""
 
@@ -4081,7 +4136,7 @@ msgid "Print packing list"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/order.js:226
+#: templates/js/translated/order.js:229
 msgid "Complete Shipments"
 msgstr ""
 
@@ -4095,7 +4150,7 @@ msgid "This Sales Order has not been fully allocated"
 msgstr ""
 
 #: order/templates/order/sales_order_base.html:123
-#: templates/js/translated/order.js:2471
+#: templates/js/translated/order.js:2503
 msgid "Customer Reference"
 msgstr ""
 
@@ -4119,8 +4174,8 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
-#: templates/js/translated/build.js:1884
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1110
+#: templates/js/translated/build.js:1882
 msgid "Actions"
 msgstr ""
 
@@ -4204,18 +4259,19 @@ msgid "Total Stock"
 msgstr ""
 
 #: part/bom.py:129 part/templates/part/part_base.html:189
-#: templates/js/translated/order.js:3565
+#: templates/js/translated/order.js:3595
 msgid "Available Stock"
 msgstr "可用库存"
 
 #: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:586 templates/js/translated/part.js:606
-#: templates/js/translated/part.js:1298 templates/js/translated/part.js:1470
-#: templates/js/translated/part.js:1486
+#: templates/js/translated/bom.js:947 templates/js/translated/part.js:586
+#: templates/js/translated/part.js:606 templates/js/translated/part.js:1298
+#: templates/js/translated/part.js:1470 templates/js/translated/part.js:1486
+#: templates/js/translated/table_filters.js:68
 msgid "On Order"
 msgstr ""
 
-#: part/forms.py:60
+#: part/forms.py:41
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -4456,7 +4512,7 @@ msgid "Enter description for this test"
 msgstr ""
 
 #: part/models.py:2307 templates/js/translated/part.js:1949
-#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:302
 msgid "Required"
 msgstr ""
 
@@ -4571,8 +4627,8 @@ msgid "BOM quantity for this BOM item"
 msgstr ""
 
 #: part/models.py:2603 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
-#: templates/js/translated/table_filters.js:96
+#: templates/js/translated/bom.js:874 templates/js/translated/bom.js:999
+#: templates/js/translated/table_filters.js:100
 msgid "Optional"
 msgstr "可选项"
 
@@ -4605,9 +4661,9 @@ msgid "BOM line checksum"
 msgstr ""
 
 #: part/models.py:2619 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:982
-#: templates/js/translated/table_filters.js:72
-#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/bom.js:1016
+#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:96
 msgid "Inherited"
 msgstr "继承项"
 
@@ -4616,7 +4672,7 @@ msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
 #: part/models.py:2625 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:974
+#: templates/js/translated/bom.js:1008
 msgid "Allow Variants"
 msgstr ""
 
@@ -4624,7 +4680,7 @@ msgstr ""
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2704 stock/models.py:462
+#: part/models.py:2704 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
@@ -4668,79 +4724,79 @@ msgstr ""
 msgid "Duplicate relationship already exists"
 msgstr ""
 
-#: part/serializers.py:139 part/serializers.py:170 stock/serializers.py:179
+#: part/serializers.py:141 part/serializers.py:172 stock/serializers.py:180
 msgid "Purchase currency of this stock item"
 msgstr ""
 
-#: part/serializers.py:764
+#: part/serializers.py:801
 msgid "Select part to copy BOM from"
 msgstr ""
 
-#: part/serializers.py:772
+#: part/serializers.py:809
 msgid "Remove Existing Data"
 msgstr ""
 
-#: part/serializers.py:773
+#: part/serializers.py:810
 msgid "Remove existing BOM items before copying"
 msgstr ""
 
-#: part/serializers.py:778
+#: part/serializers.py:815
 msgid "Include Inherited"
 msgstr ""
 
-#: part/serializers.py:779
+#: part/serializers.py:816
 msgid "Include BOM items which are inherited from templated parts"
 msgstr ""
 
-#: part/serializers.py:784
+#: part/serializers.py:821
 msgid "Skip Invalid Rows"
 msgstr ""
 
-#: part/serializers.py:785
+#: part/serializers.py:822
 msgid "Enable this option to skip invalid rows"
 msgstr ""
 
-#: part/serializers.py:790
+#: part/serializers.py:827
 msgid "Copy Substitute Parts"
 msgstr ""
 
-#: part/serializers.py:791
+#: part/serializers.py:828
 msgid "Copy substitute parts when duplicate BOM items"
 msgstr ""
 
-#: part/serializers.py:831
+#: part/serializers.py:868
 msgid "Clear Existing BOM"
 msgstr ""
 
-#: part/serializers.py:832
+#: part/serializers.py:869
 msgid "Delete existing BOM items before uploading"
 msgstr ""
 
-#: part/serializers.py:862
+#: part/serializers.py:899
 msgid "No part column specified"
 msgstr ""
 
-#: part/serializers.py:905
+#: part/serializers.py:942
 msgid "Multiple matching parts found"
 msgstr ""
 
-#: part/serializers.py:908
+#: part/serializers.py:945
 msgid "No matching part found"
 msgstr ""
 
-#: part/serializers.py:911
+#: part/serializers.py:948
 msgid "Part is not designated as a component"
 msgstr ""
 
-#: part/serializers.py:920
+#: part/serializers.py:957
 msgid "Quantity not provided"
 msgstr ""
 
-#: part/serializers.py:928
+#: part/serializers.py:965
 msgid "Invalid quantity"
 msgstr ""
 
-#: part/serializers.py:949
+#: part/serializers.py:986
 msgid "At least one BOM item is required"
 msgstr ""
 
@@ -4824,7 +4880,7 @@ msgstr "类别路径"
 msgid "Top level part category"
 msgstr ""
 
-#: part/templates/part/category.html:114 part/templates/part/category.html:216
+#: part/templates/part/category.html:114 part/templates/part/category.html:222
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
 msgstr "子类别"
@@ -4837,7 +4893,7 @@ msgstr "商品 (包括子类别)"
 msgid "Create new part"
 msgstr "新建商品"
 
-#: part/templates/part/category.html:158 templates/js/translated/bom.js:366
+#: part/templates/part/category.html:158 templates/js/translated/bom.js:367
 msgid "New Part"
 msgstr "新商品"
 
@@ -4862,19 +4918,19 @@ msgstr "打印标签"
 msgid "Part Parameters"
 msgstr "商品参数"
 
-#: part/templates/part/category.html:314
+#: part/templates/part/category.html:320
 msgid "Create Part Category"
 msgstr "创建商品类别"
 
-#: part/templates/part/category.html:334
+#: part/templates/part/category.html:340
 msgid "Create Part"
 msgstr "创建商品"
 
-#: part/templates/part/category.html:337
+#: part/templates/part/category.html:343
 msgid "Create another part after this one"
 msgstr ""
 
-#: part/templates/part/category.html:338
+#: part/templates/part/category.html:344
 msgid "Part created successfully"
 msgstr ""
 
@@ -5184,15 +5240,15 @@ msgid "Part is virtual (not a physical part)"
 msgstr "商品是虚拟的(不是实体零件)"
 
 #: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:610
-#: templates/js/translated/company.js:869
+#: templates/js/translated/company.js:624
+#: templates/js/translated/company.js:884
 #: templates/js/translated/model_renderers.js:204
 #: templates/js/translated/part.js:650 templates/js/translated/part.js:727
 msgid "Inactive"
 msgstr ""
 
 #: part/templates/part/part_base.html:160
-#: part/templates/part/part_base.html:580
+#: part/templates/part/part_base.html:586
 msgid "Show Part Details"
 msgstr ""
 
@@ -5202,7 +5258,8 @@ msgid "This part is a variant of %(link)s"
 msgstr ""
 
 #: part/templates/part/part_base.html:194
-#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/company.js:974
+#: templates/js/translated/table_filters.js:201
 msgid "In Stock"
 msgstr ""
 
@@ -5216,7 +5273,7 @@ msgstr ""
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1037
 msgid "Can Build"
 msgstr ""
 
@@ -5247,7 +5304,7 @@ msgstr ""
 msgid "No matching images found"
 msgstr ""
 
-#: part/templates/part/part_base.html:574
+#: part/templates/part/part_base.html:580
 msgid "Hide Part Details"
 msgstr ""
 
@@ -5274,7 +5331,7 @@ msgid "Total Cost"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:957
+#: templates/js/translated/bom.js:991
 msgid "No supplier pricing available"
 msgstr ""
 
@@ -5357,7 +5414,7 @@ msgstr ""
 msgid "Calculation parameters"
 msgstr ""
 
-#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:985
 msgid "Supplier Cost"
 msgstr ""
 
@@ -5450,40 +5507,40 @@ msgstr ""
 msgid "Create a new variant of template <em>'%(full_name)s'</em>."
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:158
+#: part/templatetags/inventree_extras.py:157
 msgid "Unknown database"
 msgstr ""
 
-#: part/templatetags/inventree_extras.py:193
+#: part/templatetags/inventree_extras.py:202
 #, python-brace-format
 msgid "{title} v{version}"
 msgstr ""
 
-#: part/views.py:118
+#: part/views.py:114
 msgid "Match References"
 msgstr ""
 
-#: part/views.py:419
+#: part/views.py:415
 msgid "None"
 msgstr ""
 
-#: part/views.py:481
+#: part/views.py:477
 msgid "Part QR Code"
 msgstr "商品二维码"
 
-#: part/views.py:575
+#: part/views.py:495
 msgid "Select Part Image"
 msgstr "选择商品图像"
 
-#: part/views.py:601
+#: part/views.py:521
 msgid "Updated part image"
 msgstr "更新商品图像"
 
-#: part/views.py:604
+#: part/views.py:524
 msgid "Part image not found"
 msgstr "未找到商品图像"
 
-#: part/views.py:693
+#: part/views.py:613
 msgid "Part Pricing"
 msgstr "商品价格"
 
@@ -5601,11 +5658,11 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:214
+#: plugin/plugin.py:228
 msgid "No author found"
 msgstr ""
 
-#: plugin/plugin.py:226
+#: plugin/plugin.py:240
 msgid "No date found"
 msgstr ""
 
@@ -5742,35 +5799,35 @@ msgstr ""
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:450
+#: report/models.py:449
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:504
+#: report/models.py:502
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:505
+#: report/models.py:503
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:509
+#: report/models.py:507
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:546
+#: report/models.py:545
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:547
+#: report/models.py:546
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:550
+#: report/models.py:553
 msgid "Asset file description"
 msgstr ""
 
-#: report/templates/report/inventree_build_order_base.html:147
+#: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
 msgstr ""
 
@@ -5784,11 +5841,11 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
 #: stock/models.py:641 stock/templates/stock/item_base.html:322
-#: templates/js/translated/build.js:425 templates/js/translated/build.js:577
-#: templates/js/translated/build.js:1178 templates/js/translated/build.js:1675
+#: templates/js/translated/build.js:424 templates/js/translated/build.js:576
+#: templates/js/translated/build.js:1176 templates/js/translated/build.js:1673
 #: templates/js/translated/model_renderers.js:118
-#: templates/js/translated/order.js:115 templates/js/translated/order.js:3244
-#: templates/js/translated/order.js:3331 templates/js/translated/stock.js:486
+#: templates/js/translated/order.js:118 templates/js/translated/order.js:3274
+#: templates/js/translated/order.js:3361 templates/js/translated/stock.js:486
 msgid "Serial Number"
 msgstr "序列号"
 
@@ -5797,19 +5854,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2077
+#: stock/models.py:2076
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2083
+#: stock/models.py:2082
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:51
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2403
+#: templates/js/translated/order.js:1710 templates/js/translated/stock.js:2400
 msgid "Date"
 msgstr ""
 
@@ -5828,7 +5885,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
 #: templates/js/translated/stock.js:606 templates/js/translated/stock.js:776
-#: templates/js/translated/stock.js:2652
+#: templates/js/translated/stock.js:2649
 msgid "Serial"
 msgstr ""
 
@@ -5844,57 +5901,57 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/models.py:83 stock/models.py:732
+#: stock/models.py:82 stock/models.py:732
 #: stock/templates/stock/item_base.html:252
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:84 stock/models.py:733
+#: stock/models.py:83 stock/models.py:733
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:435
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:468 stock/serializers.py:93
+#: stock/models.py:467 stock/serializers.py:94
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
-#: stock/models.py:485
+#: stock/models.py:484
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr "商品类型 ('{pf}') 必须是 {pe}"
 
-#: stock/models.py:495 stock/models.py:504
+#: stock/models.py:494 stock/models.py:503
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:495
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:518
+#: stock/models.py:517
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:524
+#: stock/models.py:523
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:538
+#: stock/models.py:537
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:584
+#: stock/models.py:583
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:593
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:602
+#: stock/models.py:601
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
@@ -6030,7 +6087,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1352 stock/serializers.py:946
+#: stock/models.py:1352 stock/serializers.py:947
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -6050,160 +6107,164 @@ msgstr ""
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1995
+#: stock/models.py:1994
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2053
+#: stock/models.py:2052
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2059
+#: stock/models.py:2058
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2078
+#: stock/models.py:2077
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2084
+#: stock/models.py:2083
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2090
+#: stock/models.py:2089
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2097
+#: stock/models.py:2096
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2103
+#: stock/models.py:2102
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:172
+#: stock/serializers.py:72
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:173
 msgid "Purchase price of this stock item"
 msgstr ""
 
-#: stock/serializers.py:292
+#: stock/serializers.py:293
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:304
+#: stock/serializers.py:305
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:310
+#: stock/serializers.py:311
 msgid "Enter serial numbers for new items"
 msgstr "输入新项目的序列号"
 
-#: stock/serializers.py:321 stock/serializers.py:903 stock/serializers.py:1136
+#: stock/serializers.py:322 stock/serializers.py:904 stock/serializers.py:1137
 msgid "Destination stock location"
 msgstr "目标库存位置"
 
-#: stock/serializers.py:328
+#: stock/serializers.py:329
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:338
+#: stock/serializers.py:339
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:355
+#: stock/serializers.py:356
 msgid "Serial numbers already exist"
 msgstr "序列号已存在"
 
-#: stock/serializers.py:395
+#: stock/serializers.py:396
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:408
+#: stock/serializers.py:409
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:415
+#: stock/serializers.py:416
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:452
+#: stock/serializers.py:453
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:457 stock/serializers.py:538
+#: stock/serializers.py:458 stock/serializers.py:539
 msgid "Add transaction note (optional)"
 msgstr "添加交易备注 (可选)"
 
-#: stock/serializers.py:491
+#: stock/serializers.py:492
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:502
+#: stock/serializers.py:503
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:533
+#: stock/serializers.py:534
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:758
+#: stock/serializers.py:759
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:762
+#: stock/serializers.py:763
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:766
+#: stock/serializers.py:767
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:797
+#: stock/serializers.py:798
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:803
+#: stock/serializers.py:804
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:811
+#: stock/serializers.py:812
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:821 stock/serializers.py:1052
+#: stock/serializers.py:822 stock/serializers.py:1053
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:910
+#: stock/serializers.py:911
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:915
+#: stock/serializers.py:916
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:916
+#: stock/serializers.py:917
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:921
+#: stock/serializers.py:922
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:922
+#: stock/serializers.py:923
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:932
+#: stock/serializers.py:933
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1014
+#: stock/serializers.py:1015
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1042
+#: stock/serializers.py:1043
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -6228,7 +6289,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:301
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:302
 msgid "Delete Test Data"
 msgstr ""
 
@@ -6240,7 +6301,7 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2796
+#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2793
 msgid "Install Stock Item"
 msgstr ""
 
@@ -6248,7 +6309,7 @@ msgstr ""
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:326 templates/js/translated/stock.js:1518
+#: stock/templates/stock/item.html:327 templates/js/translated/stock.js:1518
 msgid "Add Test Result"
 msgstr ""
 
@@ -6406,7 +6467,7 @@ msgid "Available Quantity"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:394
-#: templates/js/translated/build.js:1697
+#: templates/js/translated/build.js:1695
 msgid "No location set"
 msgstr "未设置仓储地点"
 
@@ -6420,7 +6481,7 @@ msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/table_filters.js:265
+#: templates/js/translated/table_filters.js:269
 msgid "Expired"
 msgstr ""
 
@@ -6430,12 +6491,12 @@ msgid "This StockItem expires on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:435
-#: templates/js/translated/table_filters.js:271
+#: templates/js/translated/table_filters.js:275
 msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:442
-#: templates/js/translated/company.js:965 templates/js/translated/stock.js:1895
+#: templates/js/translated/company.js:985 templates/js/translated/stock.js:1895
 msgid "Last Updated"
 msgstr ""
 
@@ -6678,7 +6739,7 @@ msgstr ""
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
-#: templates/InvenTree/notifications/notifications.html:76
+#: templates/InvenTree/notifications/notifications.html:77
 msgid "Delete Notifications"
 msgstr ""
 
@@ -6709,7 +6770,7 @@ msgstr ""
 msgid "Delete all read notifications"
 msgstr ""
 
-#: templates/InvenTree/notifications/notifications.html:92
+#: templates/InvenTree/notifications/notifications.html:93
 #: templates/js/translated/notification.js:82
 msgid "Delete Notification"
 msgstr ""
@@ -7370,7 +7431,7 @@ msgstr ""
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
 msgstr ""
 
-#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:633
+#: templates/account/email_confirm.html:22 templates/js/translated/forms.js:644
 msgid "Confirm"
 msgstr "确认"
 
@@ -7542,7 +7603,7 @@ msgstr "添加附件"
 msgid "Delete selected attachments"
 msgstr ""
 
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:113
 msgid "Delete Attachments"
 msgstr ""
 
@@ -7589,7 +7650,7 @@ msgid "The following parts are low on required stock"
 msgstr ""
 
 #: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1419
+#: templates/js/translated/bom.js:1483
 msgid "Required Quantity"
 msgstr ""
 
@@ -7610,22 +7671,6 @@ msgstr ""
 msgid "Expand all rows"
 msgstr ""
 
-#: templates/image_download.html:8
-msgid "Specify URL for downloading image"
-msgstr ""
-
-#: templates/image_download.html:11
-msgid "Must be a valid image URL"
-msgstr ""
-
-#: templates/image_download.html:12
-msgid "Remote server must be accessible"
-msgstr ""
-
-#: templates/image_download.html:13
-msgid "Remote image must not exceed maximum allowable file size"
-msgstr ""
-
 #: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
 msgid "No Response"
 msgstr ""
@@ -7694,23 +7739,23 @@ msgstr ""
 msgid "All selected attachments will be deleted"
 msgstr ""
 
-#: templates/js/translated/attachment.js:193
+#: templates/js/translated/attachment.js:194
 msgid "No attachments found"
 msgstr ""
 
-#: templates/js/translated/attachment.js:219
+#: templates/js/translated/attachment.js:220
 msgid "Edit Attachment"
 msgstr "编辑附件"
 
-#: templates/js/translated/attachment.js:289
+#: templates/js/translated/attachment.js:290
 msgid "Upload Date"
 msgstr ""
 
-#: templates/js/translated/attachment.js:312
+#: templates/js/translated/attachment.js:313
 msgid "Edit attachment"
 msgstr ""
 
-#: templates/js/translated/attachment.js:321
+#: templates/js/translated/attachment.js:322
 msgid "Delete attachment"
 msgstr ""
 
@@ -7820,10 +7865,10 @@ msgstr ""
 msgid "Row Data"
 msgstr ""
 
-#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
+#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:622
 #: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
 #: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
-#: templates/js/translated/order.js:928 templates/modals.html:15
+#: templates/js/translated/order.js:979 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
 msgstr ""
@@ -7833,21 +7878,21 @@ msgid "Download BOM Template"
 msgstr ""
 
 #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
-#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
+#: templates/js/translated/order.js:760 templates/js/translated/tables.js:145
 msgid "Format"
 msgstr ""
 
 #: templates/js/translated/bom.js:254 templates/js/translated/bom.js:288
-#: templates/js/translated/order.js:710
+#: templates/js/translated/order.js:761
 msgid "Select file format"
 msgstr ""
 
 #: templates/js/translated/bom.js:295
-msgid "Cascading"
+msgid "Multi Level BOM"
 msgstr ""
 
 #: templates/js/translated/bom.js:296
-msgid "Download cascading / multi-level BOM"
+msgid "Include BOM data for subassemblies"
 msgstr ""
 
 #: templates/js/translated/bom.js:301
@@ -7858,422 +7903,426 @@ msgstr "等级"
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
 msgstr ""
 
-#: templates/js/translated/bom.js:308
+#: templates/js/translated/bom.js:309
 msgid "Include Parameter Data"
 msgstr "包含参数数据"
 
-#: templates/js/translated/bom.js:309
+#: templates/js/translated/bom.js:310
 msgid "Include part  parameter data in exported BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:314
+#: templates/js/translated/bom.js:315
 msgid "Include Stock Data"
 msgstr "包括库存数据"
 
-#: templates/js/translated/bom.js:315
+#: templates/js/translated/bom.js:316
 msgid "Include part stock data in exported BOM"
 msgstr "在导出 BOM 中包括库存数据"
 
-#: templates/js/translated/bom.js:320
+#: templates/js/translated/bom.js:321
 msgid "Include Manufacturer Data"
 msgstr "包括制造商数据"
 
-#: templates/js/translated/bom.js:321
+#: templates/js/translated/bom.js:322
 msgid "Include part manufacturer data in exported BOM"
 msgstr "在导出 BOM 中包含制造商数据"
 
-#: templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:327
 msgid "Include Supplier Data"
 msgstr "包含供应商数据"
 
-#: templates/js/translated/bom.js:327
+#: templates/js/translated/bom.js:328
 msgid "Include part supplier data in exported BOM"
 msgstr "在导出 BOM 中包含供应商数据"
 
-#: templates/js/translated/bom.js:510
+#: templates/js/translated/bom.js:511
 msgid "Remove substitute part"
 msgstr ""
 
-#: templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:567
 msgid "Select and add a new substitute part using the input below"
 msgstr ""
 
-#: templates/js/translated/bom.js:577
+#: templates/js/translated/bom.js:578
 msgid "Are you sure you wish to remove this substitute part link?"
 msgstr ""
 
-#: templates/js/translated/bom.js:583
+#: templates/js/translated/bom.js:584
 msgid "Remove Substitute Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:622
+#: templates/js/translated/bom.js:623
 msgid "Add Substitute"
 msgstr ""
 
-#: templates/js/translated/bom.js:623
+#: templates/js/translated/bom.js:624
 msgid "Edit BOM Item Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:684
+#: templates/js/translated/bom.js:686
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: templates/js/translated/bom.js:699
+#: templates/js/translated/bom.js:702
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: templates/js/translated/bom.js:818
+#: templates/js/translated/bom.js:821
 msgid "Load BOM for subassembly"
 msgstr ""
 
-#: templates/js/translated/bom.js:828
+#: templates/js/translated/bom.js:831
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1773
+#: templates/js/translated/bom.js:835 templates/js/translated/build.js:1771
 msgid "Variant stock allowed"
 msgstr ""
 
-#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1818
-#: templates/js/translated/order.js:3579
+#: templates/js/translated/bom.js:929 templates/js/translated/build.js:1816
+#: templates/js/translated/order.js:3609
 msgid "No Stock Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:934 templates/js/translated/build.js:1820
 msgid "Includes variant and substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1824
+#: templates/js/translated/bom.js:936 templates/js/translated/build.js:1822
 #: templates/js/translated/part.js:759
 msgid "Includes variant stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1826
+#: templates/js/translated/bom.js:938 templates/js/translated/build.js:1824
 msgid "Includes substitute stock"
 msgstr ""
 
-#: templates/js/translated/bom.js:922
+#: templates/js/translated/bom.js:956
 msgid "Substitutes"
 msgstr ""
 
-#: templates/js/translated/bom.js:937
+#: templates/js/translated/bom.js:971
 msgid "Purchase Price Range"
 msgstr ""
 
-#: templates/js/translated/bom.js:944
+#: templates/js/translated/bom.js:978
 msgid "Purchase Price Average"
 msgstr ""
 
-#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
+#: templates/js/translated/bom.js:1027 templates/js/translated/bom.js:1147
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/translated/bom.js:1055
+#: templates/js/translated/bom.js:1054
+msgid "Including On Order"
+msgstr ""
+
+#: templates/js/translated/bom.js:1118
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1057
+#: templates/js/translated/bom.js:1120
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/translated/bom.js:1059
+#: templates/js/translated/bom.js:1122
 msgid "Edit substitute parts"
 msgstr ""
 
-#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
+#: templates/js/translated/bom.js:1124 templates/js/translated/bom.js:1286
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1126
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1619
+#: templates/js/translated/bom.js:1222 templates/js/translated/build.js:1617
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1757
+#: templates/js/translated/bom.js:1466 templates/js/translated/build.js:1755
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/translated/bom.js:1424
+#: templates/js/translated/bom.js:1488
 msgid "Inherited from parent BOM"
 msgstr ""
 
-#: templates/js/translated/build.js:87
+#: templates/js/translated/build.js:86
 msgid "Edit Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:121
+#: templates/js/translated/build.js:120
 msgid "Create Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:134
+#: templates/js/translated/build.js:133
 msgid "Cancel Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:143
+#: templates/js/translated/build.js:142
 msgid "Are you sure you wish to cancel this build?"
 msgstr "是否确定取消生产?"
 
-#: templates/js/translated/build.js:149
+#: templates/js/translated/build.js:148
 msgid "Stock items have been allocated to this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:156
+#: templates/js/translated/build.js:155
 msgid "There are incomplete outputs remaining for this build order"
 msgstr ""
 
-#: templates/js/translated/build.js:186
+#: templates/js/translated/build.js:185
 msgid "Build order is ready to be completed"
 msgstr ""
 
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:190
 msgid "Build Order is incomplete"
 msgstr "生产订单未完成"
 
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:222
 msgid "Complete Build Order"
 msgstr "生产订单完成"
 
-#: templates/js/translated/build.js:264 templates/js/translated/stock.js:92
+#: templates/js/translated/build.js:263 templates/js/translated/stock.js:92
 #: templates/js/translated/stock.js:210
 msgid "Next available serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:266 templates/js/translated/stock.js:94
+#: templates/js/translated/build.js:265 templates/js/translated/stock.js:94
 #: templates/js/translated/stock.js:212
 msgid "Latest serial number"
 msgstr ""
 
-#: templates/js/translated/build.js:275
+#: templates/js/translated/build.js:274
 msgid "The Bill of Materials contains trackable parts"
 msgstr ""
 
-#: templates/js/translated/build.js:276
+#: templates/js/translated/build.js:275
 msgid "Build outputs must be generated individually"
 msgstr ""
 
-#: templates/js/translated/build.js:284
+#: templates/js/translated/build.js:283
 msgid "Trackable parts can have serial numbers specified"
 msgstr "可追踪商品可以指定序列号"
 
-#: templates/js/translated/build.js:285
+#: templates/js/translated/build.js:284
 msgid "Enter serial numbers to generate multiple single build outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:292
+#: templates/js/translated/build.js:291
 msgid "Create Build Output"
 msgstr "创建创建生产产出"
 
-#: templates/js/translated/build.js:323
+#: templates/js/translated/build.js:322
 msgid "Allocate stock items to this build output"
 msgstr ""
 
-#: templates/js/translated/build.js:334
+#: templates/js/translated/build.js:333
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/translated/build.js:343
+#: templates/js/translated/build.js:342
 msgid "Complete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:350
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/translated/build.js:374
+#: templates/js/translated/build.js:373
 msgid "Are you sure you wish to unallocate stock items from this build?"
 msgstr ""
 
-#: templates/js/translated/build.js:392
+#: templates/js/translated/build.js:391
 msgid "Unallocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
+#: templates/js/translated/build.js:411 templates/js/translated/build.js:563
 msgid "Select Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:413 templates/js/translated/build.js:565
+#: templates/js/translated/build.js:412 templates/js/translated/build.js:564
 msgid "At least one build output must be selected"
 msgstr ""
 
-#: templates/js/translated/build.js:467 templates/js/translated/build.js:619
+#: templates/js/translated/build.js:466 templates/js/translated/build.js:618
 msgid "Output"
 msgstr ""
 
-#: templates/js/translated/build.js:485
+#: templates/js/translated/build.js:484
 msgid "Complete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:632
+#: templates/js/translated/build.js:631
 msgid "Delete Build Outputs"
 msgstr ""
 
-#: templates/js/translated/build.js:721
+#: templates/js/translated/build.js:720
 msgid "No build order allocations found"
 msgstr ""
 
-#: templates/js/translated/build.js:759
+#: templates/js/translated/build.js:757
 msgid "Location not specified"
 msgstr "未指定仓储地点"
 
-#: templates/js/translated/build.js:1138
+#: templates/js/translated/build.js:1136
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1207
+#: templates/js/translated/build.js:1205
 msgid "Allocated Stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:1212
 msgid "No tracked BOM items for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1234
 msgid "Completed Tests"
 msgstr ""
 
-#: templates/js/translated/build.js:1241
+#: templates/js/translated/build.js:1239
 msgid "No required tests for this build"
 msgstr ""
 
-#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2665
-#: templates/js/translated/order.js:3279
+#: templates/js/translated/build.js:1712 templates/js/translated/build.js:2656
+#: templates/js/translated/order.js:3309
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1716 templates/js/translated/build.js:2666
-#: templates/js/translated/order.js:3280
+#: templates/js/translated/build.js:1714 templates/js/translated/build.js:2657
+#: templates/js/translated/order.js:3310
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1734
+#: templates/js/translated/build.js:1732
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1744
+#: templates/js/translated/build.js:1742
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1769
+#: templates/js/translated/build.js:1767
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1786
+#: templates/js/translated/build.js:1784
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3586
+#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3616
 msgid "Insufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1814 templates/js/translated/order.js:3584
+#: templates/js/translated/build.js:1812 templates/js/translated/order.js:3614
 msgid "Sufficient stock available"
 msgstr ""
 
-#: templates/js/translated/build.js:1843 templates/js/translated/build.js:2088
-#: templates/js/translated/build.js:2661 templates/js/translated/order.js:3598
+#: templates/js/translated/build.js:1841 templates/js/translated/build.js:2086
+#: templates/js/translated/build.js:2652 templates/js/translated/order.js:3628
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1891 templates/js/translated/order.js:3678
+#: templates/js/translated/build.js:1889 templates/js/translated/order.js:3708
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1895 templates/stock_table.html:50
+#: templates/js/translated/build.js:1893 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1898 templates/js/translated/order.js:3671
+#: templates/js/translated/build.js:1896 templates/js/translated/order.js:3701
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1937 templates/js/translated/label.js:172
-#: templates/js/translated/order.js:756 templates/js/translated/order.js:2804
+#: templates/js/translated/build.js:1935 templates/js/translated/label.js:172
+#: templates/js/translated/order.js:807 templates/js/translated/order.js:2836
 #: templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "选择商品"
 
-#: templates/js/translated/build.js:1938 templates/js/translated/order.js:2805
+#: templates/js/translated/build.js:1936 templates/js/translated/order.js:2837
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1987 templates/js/translated/order.js:2753
+#: templates/js/translated/build.js:1985 templates/js/translated/order.js:2785
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:2061
+#: templates/js/translated/build.js:2059
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2062
+#: templates/js/translated/build.js:2060
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:2076 templates/js/translated/order.js:2819
+#: templates/js/translated/build.js:2074 templates/js/translated/order.js:2851
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:2104
+#: templates/js/translated/build.js:2102
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:2115 templates/js/translated/order.js:2916
+#: templates/js/translated/build.js:2113 templates/js/translated/order.js:2948
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:2187 templates/js/translated/order.js:2993
+#: templates/js/translated/build.js:2185 templates/js/translated/order.js:3025
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:2284
+#: templates/js/translated/build.js:2282
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:2285
+#: templates/js/translated/build.js:2283
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:2287
+#: templates/js/translated/build.js:2285
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:2288
+#: templates/js/translated/build.js:2286
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:2289
+#: templates/js/translated/build.js:2287
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
 msgstr ""
 
-#: templates/js/translated/build.js:2310
+#: templates/js/translated/build.js:2308
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:2417
+#: templates/js/translated/build.js:2414
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:2452 templates/js/translated/part.js:1383
+#: templates/js/translated/build.js:2449 templates/js/translated/part.js:1383
 #: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1682
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2337
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:2472
+#: templates/js/translated/build.js:2463
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2500
+#: templates/js/translated/build.js:2491
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2536 templates/js/translated/stock.js:2582
+#: templates/js/translated/build.js:2527 templates/js/translated/stock.js:2579
 msgid "No user information"
 msgstr "没有用户信息"
 
-#: templates/js/translated/build.js:2642
+#: templates/js/translated/build.js:2633
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8281,7 +8330,7 @@ msgstr ""
 msgid "Add Manufacturer"
 msgstr "添加制造商"
 
-#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:179
 msgid "Add Manufacturer Part"
 msgstr "添加制造商商品"
 
@@ -8289,99 +8338,99 @@ msgstr "添加制造商商品"
 msgid "Edit Manufacturer Part"
 msgstr "编辑制造商商品"
 
-#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:167 templates/js/translated/order.js:509
 msgid "Add Supplier"
 msgstr "添加供应商"
 
-#: templates/js/translated/company.js:184
+#: templates/js/translated/company.js:195 templates/js/translated/order.js:628
 msgid "Add Supplier Part"
 msgstr "添加供应商商品"
 
-#: templates/js/translated/company.js:251
+#: templates/js/translated/company.js:262
 msgid "All selected supplier parts will be deleted"
 msgstr "删除所有选定的供应商商品"
 
-#: templates/js/translated/company.js:266
+#: templates/js/translated/company.js:278
 msgid "Delete Supplier Parts"
 msgstr ""
 
-#: templates/js/translated/company.js:338
+#: templates/js/translated/company.js:350
 msgid "Add new Company"
 msgstr "增加新的公司信息"
 
-#: templates/js/translated/company.js:415
+#: templates/js/translated/company.js:427
 msgid "Parts Supplied"
 msgstr ""
 
-#: templates/js/translated/company.js:424
+#: templates/js/translated/company.js:436
 msgid "Parts Manufactured"
 msgstr ""
 
-#: templates/js/translated/company.js:439
+#: templates/js/translated/company.js:451
 msgid "No company information found"
 msgstr "未找到该公司信息"
 
-#: templates/js/translated/company.js:480
+#: templates/js/translated/company.js:492
 msgid "All selected manufacturer parts will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:494
+#: templates/js/translated/company.js:507
 msgid "Delete Manufacturer Parts"
 msgstr "删除制造商商品"
 
-#: templates/js/translated/company.js:528
+#: templates/js/translated/company.js:541
 msgid "All selected parameters will be deleted"
 msgstr ""
 
-#: templates/js/translated/company.js:541
+#: templates/js/translated/company.js:555
 msgid "Delete Parameters"
 msgstr "删除参数"
 
-#: templates/js/translated/company.js:582
+#: templates/js/translated/company.js:596
 msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/translated/company.js:602
-#: templates/js/translated/company.js:861 templates/js/translated/part.js:634
+#: templates/js/translated/company.js:616
+#: templates/js/translated/company.js:876 templates/js/translated/part.js:634
 #: templates/js/translated/part.js:719
 msgid "Template part"
 msgstr ""
 
-#: templates/js/translated/company.js:606
-#: templates/js/translated/company.js:865 templates/js/translated/part.js:638
+#: templates/js/translated/company.js:620
+#: templates/js/translated/company.js:880 templates/js/translated/part.js:638
 #: templates/js/translated/part.js:723
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:734 templates/js/translated/part.js:826
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:826
 msgid "No parameters found"
 msgstr "无指定参数"
 
-#: templates/js/translated/company.js:771 templates/js/translated/part.js:868
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:868
 msgid "Edit parameter"
 msgstr "编辑参数"
 
-#: templates/js/translated/company.js:772 templates/js/translated/part.js:869
+#: templates/js/translated/company.js:786 templates/js/translated/part.js:869
 msgid "Delete parameter"
 msgstr "删除参数"
 
-#: templates/js/translated/company.js:791 templates/js/translated/part.js:886
+#: templates/js/translated/company.js:805 templates/js/translated/part.js:886
 msgid "Edit Parameter"
 msgstr "编辑参数"
 
-#: templates/js/translated/company.js:802 templates/js/translated/part.js:898
+#: templates/js/translated/company.js:816 templates/js/translated/part.js:898
 msgid "Delete Parameter"
 msgstr "删除参数"
 
-#: templates/js/translated/company.js:841
+#: templates/js/translated/company.js:856
 msgid "No supplier parts found"
 msgstr "未找到供应商商品"
 
-#: templates/js/translated/company.js:982
+#: templates/js/translated/company.js:1002
 msgid "Edit supplier part"
 msgstr "编辑供应商商品"
 
-#: templates/js/translated/company.js:983
+#: templates/js/translated/company.js:1003
 msgid "Delete supplier part"
 msgstr "删除供应商商品"
 
@@ -8419,61 +8468,61 @@ msgstr ""
 msgid "Create filter"
 msgstr ""
 
-#: templates/js/translated/forms.js:356 templates/js/translated/forms.js:371
-#: templates/js/translated/forms.js:385 templates/js/translated/forms.js:399
+#: templates/js/translated/forms.js:367 templates/js/translated/forms.js:382
+#: templates/js/translated/forms.js:396 templates/js/translated/forms.js:410
 msgid "Action Prohibited"
 msgstr ""
 
-#: templates/js/translated/forms.js:358
+#: templates/js/translated/forms.js:369
 msgid "Create operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:373
+#: templates/js/translated/forms.js:384
 msgid "Update operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:387
+#: templates/js/translated/forms.js:398
 msgid "Delete operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:401
+#: templates/js/translated/forms.js:412
 msgid "View operation not allowed"
 msgstr ""
 
-#: templates/js/translated/forms.js:659
+#: templates/js/translated/forms.js:670
 msgid "Keep this form open"
 msgstr ""
 
-#: templates/js/translated/forms.js:760
+#: templates/js/translated/forms.js:771
 msgid "Enter a valid number"
 msgstr ""
 
-#: templates/js/translated/forms.js:1253 templates/modals.html:19
+#: templates/js/translated/forms.js:1264 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
 msgstr ""
 
-#: templates/js/translated/forms.js:1686
+#: templates/js/translated/forms.js:1697
 msgid "No results found"
 msgstr ""
 
-#: templates/js/translated/forms.js:1901 templates/search.html:29
+#: templates/js/translated/forms.js:1912 templates/search.html:29
 msgid "Searching"
 msgstr ""
 
-#: templates/js/translated/forms.js:2154
+#: templates/js/translated/forms.js:2165
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:2620
+#: templates/js/translated/forms.js:2631
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:2632
+#: templates/js/translated/forms.js:2643
 msgid "Select Columns"
 msgstr ""
 
@@ -8622,25 +8671,25 @@ msgstr ""
 msgid "Build ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:274
-#: templates/js/translated/model_renderers.js:300
+#: templates/js/translated/model_renderers.js:278
+#: templates/js/translated/model_renderers.js:303
 msgid "Order ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:315
-#: templates/js/translated/model_renderers.js:319
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/model_renderers.js:320
 msgid "Shipment ID"
 msgstr ""
 
-#: templates/js/translated/model_renderers.js:337
+#: templates/js/translated/model_renderers.js:338
 msgid "Category ID"
 msgstr "类别 ID"
 
-#: templates/js/translated/model_renderers.js:380
+#: templates/js/translated/model_renderers.js:381
 msgid "Manufacturer Part ID"
 msgstr "制造商商品ID"
 
-#: templates/js/translated/model_renderers.js:417
+#: templates/js/translated/model_renderers.js:418
 msgid "Supplier Part ID"
 msgstr "供应商商品ID"
 
@@ -8664,381 +8713,381 @@ msgstr ""
 msgid "Notifications will load here"
 msgstr ""
 
-#: templates/js/translated/order.js:91
+#: templates/js/translated/order.js:94
 msgid "No stock items have been allocated to this shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:96
+#: templates/js/translated/order.js:99
 msgid "The following stock items will be shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:136
+#: templates/js/translated/order.js:139
 msgid "Complete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:156
+#: templates/js/translated/order.js:159
 msgid "Confirm Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:212
+#: templates/js/translated/order.js:215
 msgid "No pending shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:216
+#: templates/js/translated/order.js:219
 msgid "No stock items have been allocated to pending shipments"
 msgstr ""
 
-#: templates/js/translated/order.js:248
+#: templates/js/translated/order.js:251
 msgid "Skip"
 msgstr ""
 
-#: templates/js/translated/order.js:278
+#: templates/js/translated/order.js:281
 msgid "Complete Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:284
+#: templates/js/translated/order.js:287
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: templates/js/translated/order.js:290
+#: templates/js/translated/order.js:293
 msgid "All line items have been received"
 msgstr ""
 
-#: templates/js/translated/order.js:295
+#: templates/js/translated/order.js:298
 msgid "This order has line items which have not been marked as received."
 msgstr ""
 
-#: templates/js/translated/order.js:296
+#: templates/js/translated/order.js:299
 msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:319
+#: templates/js/translated/order.js:322
 msgid "Cancel Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:324
+#: templates/js/translated/order.js:327
 msgid "Are you sure you wish to cancel this purchase order?"
 msgstr ""
 
-#: templates/js/translated/order.js:330
+#: templates/js/translated/order.js:333
 msgid "This purchase order can not be cancelled"
 msgstr ""
 
-#: templates/js/translated/order.js:353
+#: templates/js/translated/order.js:356
 msgid "Issue Purchase Order"
 msgstr ""
 
-#: templates/js/translated/order.js:358
+#: templates/js/translated/order.js:361
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:380
+#: templates/js/translated/order.js:383
 msgid "Cancel Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:385
+#: templates/js/translated/order.js:388
 msgid "Cancelling this order means that the order will no longer be editable."
 msgstr ""
 
-#: templates/js/translated/order.js:439
+#: templates/js/translated/order.js:442
 msgid "Create New Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:464
+#: templates/js/translated/order.js:467
 msgid "Add Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:489
+#: templates/js/translated/order.js:492
 msgid "Create Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:706
+#: templates/js/translated/order.js:757
 msgid "Export Order"
 msgstr ""
 
-#: templates/js/translated/order.js:757
+#: templates/js/translated/order.js:808
 msgid "At least one purchaseable part must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:782
+#: templates/js/translated/order.js:833
 msgid "Quantity to order"
 msgstr ""
 
-#: templates/js/translated/order.js:791
+#: templates/js/translated/order.js:842
 msgid "New supplier part"
 msgstr ""
 
-#: templates/js/translated/order.js:809
+#: templates/js/translated/order.js:860
 msgid "New purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:842
+#: templates/js/translated/order.js:893
 msgid "Add to purchase order"
 msgstr ""
 
-#: templates/js/translated/order.js:951
+#: templates/js/translated/order.js:1002
 msgid "No matching supplier parts"
 msgstr ""
 
-#: templates/js/translated/order.js:966
+#: templates/js/translated/order.js:1017
 msgid "No matching purchase orders"
 msgstr ""
 
-#: templates/js/translated/order.js:1122
+#: templates/js/translated/order.js:1171
 msgid "Select Line Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1123
+#: templates/js/translated/order.js:1172
 msgid "At least one line item must be selected"
 msgstr ""
 
-#: templates/js/translated/order.js:1143 templates/js/translated/order.js:1242
+#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1291
 msgid "Add batch code"
 msgstr ""
 
-#: templates/js/translated/order.js:1149 templates/js/translated/order.js:1253
+#: templates/js/translated/order.js:1198 templates/js/translated/order.js:1302
 msgid "Add serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:1161
+#: templates/js/translated/order.js:1210
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2143
+#: templates/js/translated/order.js:1274 templates/js/translated/stock.js:2140
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/translated/order.js:1316
+#: templates/js/translated/order.js:1365
 msgid "Order Code"
 msgstr "订单编码"
 
-#: templates/js/translated/order.js:1317
+#: templates/js/translated/order.js:1366
 msgid "Ordered"
 msgstr ""
 
-#: templates/js/translated/order.js:1319
+#: templates/js/translated/order.js:1368
 msgid "Quantity to Receive"
 msgstr ""
 
-#: templates/js/translated/order.js:1338
+#: templates/js/translated/order.js:1387
 msgid "Confirm receipt of items"
 msgstr ""
 
-#: templates/js/translated/order.js:1339
+#: templates/js/translated/order.js:1388
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:939
+#: templates/js/translated/order.js:1649 templates/js/translated/part.js:939
 msgid "No purchase orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:1635 templates/js/translated/order.js:2448
+#: templates/js/translated/order.js:1676 templates/js/translated/order.js:2480
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1685 templates/js/translated/order.js:2513
-#: templates/js/translated/order.js:2654
+#: templates/js/translated/order.js:1726 templates/js/translated/order.js:2545
+#: templates/js/translated/order.js:2686
 msgid "Items"
 msgstr ""
 
-#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3730
+#: templates/js/translated/order.js:1824 templates/js/translated/order.js:3760
 msgid "Duplicate Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3752
+#: templates/js/translated/order.js:1841 templates/js/translated/order.js:3782
 msgid "Edit Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3763
+#: templates/js/translated/order.js:1854 templates/js/translated/order.js:3793
 msgid "Delete Line Item"
 msgstr ""
 
-#: templates/js/translated/order.js:1856
+#: templates/js/translated/order.js:1897
 msgid "No line items found"
 msgstr ""
 
-#: templates/js/translated/order.js:1883 templates/js/translated/order.js:3464
+#: templates/js/translated/order.js:1924 templates/js/translated/order.js:3494
 msgid "Total"
 msgstr ""
 
-#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
-#: templates/js/translated/order.js:3489 templates/js/translated/order.js:3997
+#: templates/js/translated/order.js:1978 templates/js/translated/order.js:2180
+#: templates/js/translated/order.js:3519 templates/js/translated/order.js:4027
 #: templates/js/translated/part.js:2069 templates/js/translated/part.js:2422
 msgid "Unit Price"
 msgstr "单价"
 
-#: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155
-#: templates/js/translated/order.js:3505 templates/js/translated/order.js:4013
+#: templates/js/translated/order.js:1993 templates/js/translated/order.js:2196
+#: templates/js/translated/order.js:3535 templates/js/translated/order.js:4043
 msgid "Total Price"
 msgstr ""
 
-#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3547
-#: templates/js/translated/part.js:1048
+#: templates/js/translated/order.js:2034 templates/js/translated/order.js:3577
+#: templates/js/translated/part.js:1046
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1094
+#: templates/js/translated/order.js:2093 templates/js/translated/part.js:1092
 msgid "Receive line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3684
+#: templates/js/translated/order.js:2097 templates/js/translated/order.js:3714
 msgid "Duplicate line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3685
+#: templates/js/translated/order.js:2098 templates/js/translated/order.js:3715
 msgid "Edit line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3689
+#: templates/js/translated/order.js:2099 templates/js/translated/order.js:3719
 msgid "Delete line item"
 msgstr ""
 
-#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4062
+#: templates/js/translated/order.js:2245 templates/js/translated/order.js:4092
 msgid "Duplicate line"
 msgstr ""
 
-#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4063
+#: templates/js/translated/order.js:2246 templates/js/translated/order.js:4093
 msgid "Edit line"
 msgstr ""
 
-#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4064
+#: templates/js/translated/order.js:2247 templates/js/translated/order.js:4094
 msgid "Delete line"
 msgstr ""
 
-#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4094
+#: templates/js/translated/order.js:2277 templates/js/translated/order.js:4124
 msgid "Duplicate Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4115
+#: templates/js/translated/order.js:2298 templates/js/translated/order.js:4145
 msgid "Edit Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4126
+#: templates/js/translated/order.js:2309 templates/js/translated/order.js:4156
 msgid "Delete Line"
 msgstr ""
 
-#: templates/js/translated/order.js:2279
+#: templates/js/translated/order.js:2320
 msgid "No matching line"
 msgstr ""
 
-#: templates/js/translated/order.js:2392
+#: templates/js/translated/order.js:2431
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/translated/order.js:2462
+#: templates/js/translated/order.js:2494
 msgid "Invalid Customer"
 msgstr ""
 
-#: templates/js/translated/order.js:2560
+#: templates/js/translated/order.js:2592
 msgid "Edit shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2563
+#: templates/js/translated/order.js:2595
 msgid "Complete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2568
+#: templates/js/translated/order.js:2600
 msgid "Delete shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2588
+#: templates/js/translated/order.js:2620
 msgid "Edit Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2605
+#: templates/js/translated/order.js:2637
 msgid "Delete Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2639
+#: templates/js/translated/order.js:2671
 msgid "No matching shipments found"
 msgstr ""
 
-#: templates/js/translated/order.js:2649
+#: templates/js/translated/order.js:2681
 msgid "Shipment Reference"
 msgstr ""
 
-#: templates/js/translated/order.js:2673
+#: templates/js/translated/order.js:2705
 msgid "Not shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:2679
+#: templates/js/translated/order.js:2711
 msgid "Tracking"
 msgstr ""
 
-#: templates/js/translated/order.js:2683
+#: templates/js/translated/order.js:2715
 msgid "Invoice"
 msgstr ""
 
-#: templates/js/translated/order.js:2852
+#: templates/js/translated/order.js:2884
 msgid "Add Shipment"
 msgstr ""
 
-#: templates/js/translated/order.js:2903
+#: templates/js/translated/order.js:2935
 msgid "Confirm stock allocation"
 msgstr "确认库存分配"
 
-#: templates/js/translated/order.js:2904
+#: templates/js/translated/order.js:2936
 msgid "Allocate Stock Items to Sales Order"
 msgstr ""
 
-#: templates/js/translated/order.js:3112
+#: templates/js/translated/order.js:3144
 msgid "No sales order allocations found"
 msgstr ""
 
-#: templates/js/translated/order.js:3193
+#: templates/js/translated/order.js:3223
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3210
+#: templates/js/translated/order.js:3240
 msgid "Confirm Delete Operation"
 msgstr "确认删除操作"
 
-#: templates/js/translated/order.js:3211
+#: templates/js/translated/order.js:3241
 msgid "Delete Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/order.js:3256 templates/js/translated/order.js:3345
+#: templates/js/translated/order.js:3286 templates/js/translated/order.js:3375
 #: templates/js/translated/stock.js:1598
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3354
+#: templates/js/translated/order.js:3294 templates/js/translated/order.js:3384
 msgid "Stock location not specified"
 msgstr ""
 
-#: templates/js/translated/order.js:3668
+#: templates/js/translated/order.js:3698
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3674
+#: templates/js/translated/order.js:3704
 msgid "Purchase stock"
 msgstr ""
 
-#: templates/js/translated/order.js:3681 templates/js/translated/order.js:3879
+#: templates/js/translated/order.js:3711 templates/js/translated/order.js:3909
 msgid "Calculate price"
 msgstr ""
 
-#: templates/js/translated/order.js:3693
+#: templates/js/translated/order.js:3723
 msgid "Cannot be deleted as items have been shipped"
 msgstr ""
 
-#: templates/js/translated/order.js:3696
+#: templates/js/translated/order.js:3726
 msgid "Cannot be deleted as items have been allocated"
 msgstr ""
 
-#: templates/js/translated/order.js:3778
+#: templates/js/translated/order.js:3808
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: templates/js/translated/order.js:3887
+#: templates/js/translated/order.js:3917
 msgid "Update Unit Price"
 msgstr ""
 
-#: templates/js/translated/order.js:3901
+#: templates/js/translated/order.js:3931
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/order.js:4137
+#: templates/js/translated/order.js:4167
 msgid "No matching lines"
 msgstr ""
 
@@ -9215,7 +9264,7 @@ msgid "Copy Bill of Materials"
 msgstr ""
 
 #: templates/js/translated/part.js:582 templates/js/translated/part.js:1466
-#: templates/js/translated/table_filters.js:464
+#: templates/js/translated/table_filters.js:468
 msgid "Low stock"
 msgstr ""
 
@@ -9243,11 +9292,11 @@ msgstr "可销售商品"
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1164
+#: templates/js/translated/part.js:1162
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1188
+#: templates/js/translated/part.js:1186
 msgid "Delete Part Relationship"
 msgstr ""
 
@@ -9264,7 +9313,7 @@ msgid "No category"
 msgstr "没有分类"
 
 #: templates/js/translated/part.js:1573 templates/js/translated/part.js:1785
-#: templates/js/translated/stock.js:2301
+#: templates/js/translated/stock.js:2298
 msgid "Display as list"
 msgstr ""
 
@@ -9288,7 +9337,7 @@ msgstr ""
 msgid "Category is required"
 msgstr ""
 
-#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2320
+#: templates/js/translated/part.js:1804 templates/js/translated/stock.js:2317
 msgid "Display as tree"
 msgstr ""
 
@@ -9296,7 +9345,7 @@ msgstr ""
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2364
+#: templates/js/translated/part.js:1882 templates/js/translated/stock.js:2361
 msgid "Path"
 msgstr ""
 
@@ -9719,7 +9768,7 @@ msgid "Stock item is destroyed"
 msgstr ""
 
 #: templates/js/translated/stock.js:1814
-#: templates/js/translated/table_filters.js:192
+#: templates/js/translated/table_filters.js:196
 msgid "Depleted"
 msgstr ""
 
@@ -9727,95 +9776,95 @@ msgstr ""
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:1944
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1982
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2158
+#: templates/js/translated/stock.js:2155
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2172
+#: templates/js/translated/stock.js:2169
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2173
+#: templates/js/translated/stock.js:2170
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2425
 msgid "Details"
 msgstr "详情"
 
-#: templates/js/translated/stock.js:2444
+#: templates/js/translated/stock.js:2441
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2466
+#: templates/js/translated/stock.js:2463
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2482
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2504
+#: templates/js/translated/stock.js:2501
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2522
+#: templates/js/translated/stock.js:2519
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2545
+#: templates/js/translated/stock.js:2542
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2553
+#: templates/js/translated/stock.js:2550
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2629
+#: templates/js/translated/stock.js:2626
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2680 templates/js/translated/stock.js:2716
+#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2713
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2729
+#: templates/js/translated/stock.js:2726
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2747
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2751
+#: templates/js/translated/stock.js:2748
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2753
+#: templates/js/translated/stock.js:2750
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2751
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2755
+#: templates/js/translated/stock.js:2752
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2756
+#: templates/js/translated/stock.js:2753
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:2769
+#: templates/js/translated/stock.js:2766
 msgid "Select part to install"
 msgstr ""
 
@@ -9831,223 +9880,223 @@ msgstr ""
 msgid "Has Available Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:68
+#: templates/js/translated/table_filters.js:72
 msgid "Validated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:76
+#: templates/js/translated/table_filters.js:80
 msgid "Allow Variant Stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:114
-#: templates/js/translated/table_filters.js:187
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:191
 msgid "Include sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:115
+#: templates/js/translated/table_filters.js:119
 msgid "Include locations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:125
-#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:433
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:437
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:130
-#: templates/js/translated/table_filters.js:476
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:480
 msgid "Subscribed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:140
-#: templates/js/translated/table_filters.js:222
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/translated/table_filters.js:143
-#: templates/js/translated/table_filters.js:229
-msgid "Serial number GTE"
-msgstr ""
-
 #: templates/js/translated/table_filters.js:144
-#: templates/js/translated/table_filters.js:230
-msgid "Serial number greater than or equal to"
+#: templates/js/translated/table_filters.js:226
+msgid "Is Serialized"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:233
-msgid "Serial number LTE"
+msgid "Serial number GTE"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:148
 #: templates/js/translated/table_filters.js:234
-msgid "Serial number less than or equal to"
+msgid "Serial number greater than or equal to"
 msgstr ""
 
 #: templates/js/translated/table_filters.js:151
+#: templates/js/translated/table_filters.js:237
+msgid "Serial number LTE"
+msgstr ""
+
 #: templates/js/translated/table_filters.js:152
-#: templates/js/translated/table_filters.js:225
-#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:238
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:155
+#: templates/js/translated/table_filters.js:156
+#: templates/js/translated/table_filters.js:229
+#: templates/js/translated/table_filters.js:230
 msgid "Serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:156
-#: templates/js/translated/table_filters.js:247
+#: templates/js/translated/table_filters.js:160
+#: templates/js/translated/table_filters.js:251
 msgid "Batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:167
-#: templates/js/translated/table_filters.js:405
+#: templates/js/translated/table_filters.js:171
+#: templates/js/translated/table_filters.js:409
 msgid "Active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:172
 msgid "Show stock for active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:173
+#: templates/js/translated/table_filters.js:177
 msgid "Part is an assembly"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:177
+#: templates/js/translated/table_filters.js:181
 msgid "Is allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:182
 msgid "Item has been allocated"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:183
+#: templates/js/translated/table_filters.js:187
 msgid "Stock is available for use"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:188
+#: templates/js/translated/table_filters.js:192
 msgid "Include stock in sublocations"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:197
 msgid "Show stock items which are depleted"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/table_filters.js:202
 msgid "Show items which are in stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:202
+#: templates/js/translated/table_filters.js:206
 msgid "In Production"
 msgstr "正在生产"
 
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:207
 msgid "Show items which are in production"
 msgstr "显示正在生产的项目"
 
-#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:211
 msgid "Include Variants"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:208
+#: templates/js/translated/table_filters.js:212
 msgid "Include stock items for variant parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:216
 msgid "Installed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:217
 msgid "Show stock items which are installed in another item"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:222
 msgid "Show items which have been assigned to a customer"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:238
-#: templates/js/translated/table_filters.js:239
+#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:243
 msgid "Stock status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:242
+#: templates/js/translated/table_filters.js:246
 msgid "Has batch code"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:254
 msgid "Tracked"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:251
+#: templates/js/translated/table_filters.js:255
 msgid "Stock item is tracked by either batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:256
+#: templates/js/translated/table_filters.js:260
 msgid "Has purchase price"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:257
+#: templates/js/translated/table_filters.js:261
 msgid "Show stock items which have a purchase price set"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:266
+#: templates/js/translated/table_filters.js:270
 msgid "Show stock items which have expired"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:276
 msgid "Show stock which is close to expiring"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:284
+#: templates/js/translated/table_filters.js:288
 msgid "Test Passed"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:288
+#: templates/js/translated/table_filters.js:292
 msgid "Include Installed Items"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:307
+#: templates/js/translated/table_filters.js:311
 msgid "Build status"
 msgstr "生产状态"
 
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:324
+#: templates/js/translated/table_filters.js:365
 msgid "Assigned to me"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:337
-#: templates/js/translated/table_filters.js:348
-#: templates/js/translated/table_filters.js:378
+#: templates/js/translated/table_filters.js:341
+#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:382
 msgid "Order status"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:353
-#: templates/js/translated/table_filters.js:370
-#: templates/js/translated/table_filters.js:383
+#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:374
+#: templates/js/translated/table_filters.js:387
 msgid "Outstanding"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:438
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:439
+#: templates/js/translated/table_filters.js:443
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:447
+#: templates/js/translated/table_filters.js:451
 msgid "Available stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:455
+#: templates/js/translated/table_filters.js:459
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:456
+#: templates/js/translated/table_filters.js:460
 msgid "Part has internal part number"
 msgstr "商品有内部编号"
 
-#: templates/js/translated/table_filters.js:460
+#: templates/js/translated/table_filters.js:464
 msgid "In stock"
 msgstr ""
 
-#: templates/js/translated/table_filters.js:468
+#: templates/js/translated/table_filters.js:472
 msgid "Purchasable"
 msgstr ""